pub struct BigNum(/* private fields */);
Expand description
Dynamically sized large number impelementation
Perform large number mathematics. Create a new BigNum
with new
. Perform standard mathematics on large numbers using
methods from Dref<Target = BigNumRef>
OpenSSL documentation at BN_new
.
§Examples
use boring::bn::BigNum;
let little_big = BigNum::from_u32(std::u32::MAX)?;
assert_eq!(*&little_big.num_bytes(), 4);
Implementations§
§impl BigNum
impl BigNum
pub fn new() -> Result<BigNum, ErrorStack>
pub fn new() -> Result<BigNum, ErrorStack>
Creates a new BigNum
with the value 0.
pub fn from_u32(n: u32) -> Result<BigNum, ErrorStack>
pub fn from_u32(n: u32) -> Result<BigNum, ErrorStack>
Creates a new BigNum
with the given value.
OpenSSL documentation at BN_set_word
pub fn from_dec_str(s: &str) -> Result<BigNum, ErrorStack>
pub fn from_dec_str(s: &str) -> Result<BigNum, ErrorStack>
Creates a BigNum
from a decimal string.
OpenSSL documentation at BN_dec2bn
pub fn from_hex_str(s: &str) -> Result<BigNum, ErrorStack>
pub fn from_hex_str(s: &str) -> Result<BigNum, ErrorStack>
Creates a BigNum
from a hexadecimal string.
OpenSSL documentation at BN_hex2bn
pub fn from_slice(n: &[u8]) -> Result<BigNum, ErrorStack>
pub fn from_slice(n: &[u8]) -> Result<BigNum, ErrorStack>
Creates a new BigNum
from an unsigned, big-endian encoded number of arbitrary length.
OpenSSL documentation at BN_bin2bn
let bignum = BigNum::from_slice(&[0x12, 0x00, 0x34]).unwrap();
assert_eq!(bignum, BigNum::from_u32(0x120034).unwrap());
Methods from Deref<Target = BigNumRef>§
pub fn clear(&mut self)
pub fn clear(&mut self)
Erases the memory used by this BigNum
, resetting its value to 0.
This can be used to destroy sensitive data such as keys when they are no longer needed.
OpenSSL documentation at BN_clear
pub fn add_word(&mut self, w: u32) -> Result<(), ErrorStack>
pub fn add_word(&mut self, w: u32) -> Result<(), ErrorStack>
Adds a u32
to self
.
OpenSSL documentation at BN_add_word
pub fn sub_word(&mut self, w: u32) -> Result<(), ErrorStack>
pub fn sub_word(&mut self, w: u32) -> Result<(), ErrorStack>
Subtracts a u32
from self
.
OpenSSL documentation at BN_sub_word
pub fn mul_word(&mut self, w: u32) -> Result<(), ErrorStack>
pub fn mul_word(&mut self, w: u32) -> Result<(), ErrorStack>
Multiplies a u32
by self
.
OpenSSL documentation at BN_mul_word
pub fn div_word(&mut self, w: u32) -> Result<u64, ErrorStack>
pub fn div_word(&mut self, w: u32) -> Result<u64, ErrorStack>
Divides self
by a u32
, returning the remainder.
OpenSSL documentation at BN_div_word
pub fn mod_word(&self, w: u32) -> Result<u64, ErrorStack>
pub fn mod_word(&self, w: u32) -> Result<u64, ErrorStack>
Returns the result of self
modulo w
.
OpenSSL documentation at BN_mod_word
pub fn rand_range(&self, rnd: &mut BigNumRef) -> Result<(), ErrorStack>
pub fn rand_range(&self, rnd: &mut BigNumRef) -> Result<(), ErrorStack>
Places a cryptographically-secure pseudo-random nonnegative
number less than self
in rnd
.
OpenSSL documentation at BN_rand_range
pub fn pseudo_rand_range(&self, rnd: &mut BigNumRef) -> Result<(), ErrorStack>
pub fn pseudo_rand_range(&self, rnd: &mut BigNumRef) -> Result<(), ErrorStack>
The cryptographically weak counterpart to rand_in_range
.
OpenSSL documentation at BN_pseudo_rand_range
pub fn set_bit(&mut self, n: i32) -> Result<(), ErrorStack>
pub fn set_bit(&mut self, n: i32) -> Result<(), ErrorStack>
Sets bit n
. Equivalent to self |= (1 << n)
.
When setting a bit outside of self
, it is expanded.
OpenSSL documentation at BN_set_bit
pub fn clear_bit(&mut self, n: i32) -> Result<(), ErrorStack>
pub fn clear_bit(&mut self, n: i32) -> Result<(), ErrorStack>
Clears bit n
, setting it to 0. Equivalent to self &= ~(1 << n)
.
When clearing a bit outside of self
, an error is returned.
OpenSSL documentation at BN_clear_bit
pub fn is_bit_set(&self, n: i32) -> bool
pub fn is_bit_set(&self, n: i32) -> bool
Returns true
if the n
th bit of self
is set to 1, false
otherwise.
OpenSSL documentation at BN_is_bit_set
pub fn mask_bits(&mut self, n: i32) -> Result<(), ErrorStack>
pub fn mask_bits(&mut self, n: i32) -> Result<(), ErrorStack>
Truncates self
to the lowest n
bits.
An error occurs if self
is already shorter than n
bits.
OpenSSL documentation at BN_mask_bits
pub fn lshift1(&mut self, a: &BigNumRef) -> Result<(), ErrorStack>
pub fn lshift1(&mut self, a: &BigNumRef) -> Result<(), ErrorStack>
Places a << 1
in self
. Equivalent to self * 2
.
OpenSSL documentation at BN_lshift1
pub fn rshift1(&mut self, a: &BigNumRef) -> Result<(), ErrorStack>
pub fn rshift1(&mut self, a: &BigNumRef) -> Result<(), ErrorStack>
Places a >> 1
in self
. Equivalent to self / 2
.
OpenSSL documentation at BN_rshift1
pub fn checked_add(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
) -> Result<(), ErrorStack>
pub fn checked_add( &mut self, a: &BigNumRef, b: &BigNumRef, ) -> Result<(), ErrorStack>
Places a + b
in self
. core::ops::Add
is also implemented for BigNumRef
.
OpenSSL documentation at BN_add
pub fn checked_sub(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
) -> Result<(), ErrorStack>
pub fn checked_sub( &mut self, a: &BigNumRef, b: &BigNumRef, ) -> Result<(), ErrorStack>
Places a - b
in self
. core::ops::Sub
is also implemented for BigNumRef
.
OpenSSL documentation at BN_sub
pub fn lshift(&mut self, a: &BigNumRef, n: i32) -> Result<(), ErrorStack>
pub fn lshift(&mut self, a: &BigNumRef, n: i32) -> Result<(), ErrorStack>
Places a << n
in self
. Equivalent to a * 2 ^ n
.
OpenSSL documentation at BN_lshift
pub fn rshift(&mut self, a: &BigNumRef, n: i32) -> Result<(), ErrorStack>
pub fn rshift(&mut self, a: &BigNumRef, n: i32) -> Result<(), ErrorStack>
Places a >> n
in self
. Equivalent to a / 2 ^ n
.
OpenSSL documentation at BN_rshift
pub fn to_owned(&self) -> Result<BigNum, ErrorStack>
pub fn to_owned(&self) -> Result<BigNum, ErrorStack>
Creates a new BigNum with the same value.
OpenSSL documentation at BN_dup
pub fn set_negative(&mut self, negative: bool)
pub fn set_negative(&mut self, negative: bool)
Sets the sign of self
. Pass true to set self
to a negative. False sets
self
positive.
pub fn is_negative(&self) -> bool
pub fn is_negative(&self) -> bool
Returns true
if self
is negative.
pub fn num_bits(&self) -> i32
pub fn num_bits(&self) -> i32
Returns the number of significant bits in self
.
OpenSSL documentation at BN_num_bits
pub fn rand(
&mut self,
bits: i32,
msb: MsbOption,
odd: bool,
) -> Result<(), ErrorStack>
pub fn rand( &mut self, bits: i32, msb: MsbOption, odd: bool, ) -> Result<(), ErrorStack>
Generates a cryptographically strong pseudo-random BigNum
, placing it in self
.
§Parameters
bits
: Length of the number in bits.msb
: The desired properties of the most significant bit. Seeconstants
.odd
: Iftrue
, the generated number will be odd.
§Examples
use boring::bn::{BigNum, MsbOption};
use boring::error::ErrorStack;
fn generate_random() -> Result< BigNum, ErrorStack > {
let mut big = BigNum::new()?;
// Generates a 128-bit odd random number
big.rand(128, MsbOption::MAYBE_ZERO, true);
Ok((big))
}
OpenSSL documentation at BN_rand
pub fn pseudo_rand(
&mut self,
bits: i32,
msb: MsbOption,
odd: bool,
) -> Result<(), ErrorStack>
pub fn pseudo_rand( &mut self, bits: i32, msb: MsbOption, odd: bool, ) -> Result<(), ErrorStack>
The cryptographically weak counterpart to rand
. Not suitable for key generation.
OpenSSL documentation at BN_pseudo_rand
pub fn generate_prime(
&mut self,
bits: i32,
safe: bool,
add: Option<&BigNumRef>,
rem: Option<&BigNumRef>,
) -> Result<(), ErrorStack>
pub fn generate_prime( &mut self, bits: i32, safe: bool, add: Option<&BigNumRef>, rem: Option<&BigNumRef>, ) -> Result<(), ErrorStack>
Generates a prime number, placing it in self
.
§Parameters
bits
: The length of the prime in bits (lower bound).safe
: If true, returns a “safe” primep
so that(p-1)/2
is also prime.add
/rem
: Ifadd
is set toSome(add)
,p % add == rem
will hold, wherep
is the generated prime andrem
is1
if not specified (None
).
§Examples
use boring::bn::BigNum;
use boring::error::ErrorStack;
fn generate_weak_prime() -> Result< BigNum, ErrorStack > {
let mut big = BigNum::new()?;
// Generates a 128-bit simple prime number
big.generate_prime(128, false, None, None);
Ok((big))
}
OpenSSL documentation at BN_generate_prime_ex
pub fn checked_mul(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn checked_mul( &mut self, a: &BigNumRef, b: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of a * b
in self
.
core::ops::Mul
is also implemented for BigNumRef
.
OpenSSL documentation at BN_mul
pub fn checked_div(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn checked_div( &mut self, a: &BigNumRef, b: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of a / b
in self
. The remainder is discarded.
core::ops::Div
is also implemented for BigNumRef
.
OpenSSL documentation at BN_div
pub fn checked_rem(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn checked_rem( &mut self, a: &BigNumRef, b: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of a % b
in self
.
OpenSSL documentation at BN_div
pub fn div_rem(
&mut self,
rem: &mut BigNumRef,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn div_rem( &mut self, rem: &mut BigNumRef, a: &BigNumRef, b: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of a / b
in self
and a % b
in rem
.
OpenSSL documentation at BN_div
pub fn sqr(
&mut self,
a: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn sqr( &mut self, a: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of a²
in self
.
OpenSSL documentation at BN_sqr
pub fn nnmod(
&mut self,
a: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn nnmod( &mut self, a: &BigNumRef, m: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of a mod m
in self
. As opposed to div_rem
the result is non-negative.
OpenSSL documentation at BN_nnmod
pub fn mod_add(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn mod_add( &mut self, a: &BigNumRef, b: &BigNumRef, m: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of (a + b) mod m
in self
.
OpenSSL documentation at BN_mod_add
pub fn mod_sub(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn mod_sub( &mut self, a: &BigNumRef, b: &BigNumRef, m: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of (a - b) mod m
in self
.
OpenSSL documentation at BN_mod_sub
pub fn mod_mul(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn mod_mul( &mut self, a: &BigNumRef, b: &BigNumRef, m: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of (a * b) mod m
in self
.
OpenSSL documentation at BN_mod_mul
pub fn mod_sqr(
&mut self,
a: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn mod_sqr( &mut self, a: &BigNumRef, m: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of a² mod m
in self
.
OpenSSL documentation at BN_mod_sqr
pub fn exp(
&mut self,
a: &BigNumRef,
p: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn exp( &mut self, a: &BigNumRef, p: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of a^p
in self
.
OpenSSL documentation at BN_exp
pub fn mod_exp(
&mut self,
a: &BigNumRef,
p: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn mod_exp( &mut self, a: &BigNumRef, p: &BigNumRef, m: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the result of a^p mod m
in self
.
OpenSSL documentation at BN_mod_exp
pub fn mod_inverse(
&mut self,
a: &BigNumRef,
n: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn mod_inverse( &mut self, a: &BigNumRef, n: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the inverse of a
modulo n
in self
.
pub fn gcd(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef,
) -> Result<(), ErrorStack>
pub fn gcd( &mut self, a: &BigNumRef, b: &BigNumRef, ctx: &mut BigNumContextRef, ) -> Result<(), ErrorStack>
Places the greatest common denominator of a
and b
in self
.
OpenSSL documentation at BN_gcd
pub fn is_prime(
&self,
checks: i32,
ctx: &mut BigNumContextRef,
) -> Result<bool, ErrorStack>
pub fn is_prime( &self, checks: i32, ctx: &mut BigNumContextRef, ) -> Result<bool, ErrorStack>
Checks whether self
is prime.
Performs a Miller-Rabin probabilistic primality test with checks
iterations.
OpenSSL documentation at BN_is_prime_ex
§Return Value
Returns true
if self
is prime with an error probability of less than 0.25 ^ checks
.
pub fn is_prime_fasttest(
&self,
checks: i32,
ctx: &mut BigNumContextRef,
do_trial_division: bool,
) -> Result<bool, ErrorStack>
pub fn is_prime_fasttest( &self, checks: i32, ctx: &mut BigNumContextRef, do_trial_division: bool, ) -> Result<bool, ErrorStack>
Checks whether self
is prime with optional trial division.
If do_trial_division
is true
, first performs trial division by a number of small primes.
Then, like is_prime
, performs a Miller-Rabin probabilistic primality test with checks
iterations.
OpenSSL documentation at BN_is_prime_fasttest_ex
§Return Value
Returns true
if self
is prime with an error probability of less than 0.25 ^ checks
.
pub fn to_vec(&self) -> Vec<u8> ⓘ
pub fn to_vec(&self) -> Vec<u8> ⓘ
Returns a big-endian byte vector representation of the absolute value of self
.
self
can be recreated by using from_slice
.
let s = -BigNum::from_u32(4543).unwrap();
let r = BigNum::from_u32(4543).unwrap();
let s_vec = s.to_vec();
assert_eq!(BigNum::from_slice(&s_vec).unwrap(), r);
pub fn to_vec_padded(&self, pad_to: usize) -> Result<Vec<u8>, ErrorStack>
pub fn to_vec_padded(&self, pad_to: usize) -> Result<Vec<u8>, ErrorStack>
Returns a big-endian byte vector representation of the absolute value of self
padded
to pad_to
bytes.
If pad_to
is less than self.num_bytes()
then an error is returned.
self
can be recreated by using from_slice
.
let bn = BigNum::from_u32(0x4543).unwrap();
let bn_vec = bn.to_vec_padded(4).unwrap();
assert_eq!(&bn_vec, &[0, 0, 0x45, 0x43]);
let r = bn.to_vec_padded(1);
assert!(r.is_err());
let bn = -BigNum::from_u32(0x4543).unwrap();
let bn_vec = bn.to_vec_padded(4).unwrap();
assert_eq!(&bn_vec, &[0, 0, 0x45, 0x43]);
pub fn to_dec_str(&self) -> Result<OpensslString, ErrorStack>
pub fn to_dec_str(&self) -> Result<OpensslString, ErrorStack>
Returns a decimal string representation of self
.
let s = -BigNum::from_u32(12345).unwrap();
assert_eq!(&**s.to_dec_str().unwrap(), "-12345");
pub fn to_hex_str(&self) -> Result<OpensslString, ErrorStack>
pub fn to_hex_str(&self) -> Result<OpensslString, ErrorStack>
Returns a hexadecimal string representation of self
.
let s = -BigNum::from_u32(0x99ff).unwrap();
assert_eq!(&**s.to_hex_str().unwrap(), "-99ff");
pub fn to_asn1_integer(&self) -> Result<Asn1Integer, ErrorStack>
pub fn to_asn1_integer(&self) -> Result<Asn1Integer, ErrorStack>
Returns an Asn1Integer
containing the value of self
.
Trait Implementations§
§impl BorrowMut<BigNumRef> for BigNum
impl BorrowMut<BigNumRef> for BigNum
§fn borrow_mut(&mut self) -> &mut BigNumRef
fn borrow_mut(&mut self) -> &mut BigNumRef
§impl ForeignType for BigNum
impl ForeignType for BigNum
§impl Ord for BigNum
impl Ord for BigNum
§impl PartialOrd<BigNum> for BigNumRef
impl PartialOrd<BigNum> for BigNumRef
§fn partial_cmp(&self, oth: &BigNum) -> Option<Ordering>
fn partial_cmp(&self, oth: &BigNum) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more§impl PartialOrd<BigNumRef> for BigNum
impl PartialOrd<BigNumRef> for BigNum
§fn partial_cmp(&self, oth: &BigNumRef) -> Option<Ordering>
fn partial_cmp(&self, oth: &BigNumRef) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more§impl PartialOrd for BigNum
impl PartialOrd for BigNum
§fn partial_cmp(&self, oth: &BigNum) -> Option<Ordering>
fn partial_cmp(&self, oth: &BigNum) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moreimpl Eq for BigNum
impl Send for BigNum
impl Sync for BigNum
Auto Trait Implementations§
impl Freeze for BigNum
impl RefUnwindSafe for BigNum
impl Unpin for BigNum
impl UnwindSafe for BigNum
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<T> Conv for T
impl<T> Conv for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<S, P, B, E>(self, other: P) -> And<T, P>
fn and<S, P, B, E>(self, other: P) -> And<T, P>
Policy
that returns Action::Follow
only if self
and other
return
Action::Follow
. Read more§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string
, but without panic on OOM.