Struct Signed
pub struct Signed<const BITS: usize, const LIMBS: usize>(pub(crate) Uint<BITS, LIMBS>);
Expand description
Signed integer wrapping a ruint::Uint
.
This signed integer implementation is fully abstract across the number of
bits. It wraps a ruint::Uint
, and co-opts the most significant bit to
represent the sign. The number is represented in two’s complement, using the
underlying Uint
’s u64
limbs. The limbs can be accessed via the
Signed::as_limbs()
method, and are least-significant first.
§Aliases
We provide aliases for every bit-width divisble by 8, from 8 to 256. These
are located in crate::aliases
and are named I256
, I248
etc. Most
users will want crate::I256
.
§Usage
// Instantiate from a number
let a = I256::unchecked_from(1);
// Use `try_from` if you're not sure it'll fit
let b = I256::try_from(200000382).unwrap();
// Or parse from a string :)
let c = "100".parse::<I256>().unwrap();
let d = "-0x138f".parse::<I256>().unwrap();
// Preceding plus is allowed but not recommended
let e = "+0xdeadbeef".parse::<I256>().unwrap();
// Underscores are ignored
let f = "1_000_000".parse::<I256>().unwrap();
// But invalid chars are not
assert!("^31".parse::<I256>().is_err());
// Math works great :)
let g = a * b + c - d;
// And so do comparisons!
assert!(e > a);
// We have some useful constants too
assert_eq!(I256::ZERO, I256::unchecked_from(0));
assert_eq!(I256::ONE, I256::unchecked_from(1));
assert_eq!(I256::MINUS_ONE, I256::unchecked_from(-1));
Tuple Fields§
§0: Uint<BITS, LIMBS>
Implementations§
§impl<const BITS: usize, const LIMBS: usize> Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Signed<BITS, LIMBS>
pub fn as_u8(&self) -> u8
pub fn as_u8(&self) -> u8
Conversion to u8 with overflow checking.
§Panics
Panics if the number is outside the u8 valid range.
pub fn as_i8(&self) -> i8
pub fn as_i8(&self) -> i8
Conversion to i8 with overflow checking.
§Panics
Panics if the number is outside the i8 valid range.
pub fn as_u16(&self) -> u16
pub fn as_u16(&self) -> u16
Conversion to u16 with overflow checking.
§Panics
Panics if the number is outside the u16 valid range.
pub fn as_i16(&self) -> i16
pub fn as_i16(&self) -> i16
Conversion to i16 with overflow checking.
§Panics
Panics if the number is outside the i16 valid range.
pub fn as_u32(&self) -> u32
pub fn as_u32(&self) -> u32
Conversion to u32 with overflow checking.
§Panics
Panics if the number is outside the u32 valid range.
pub fn as_i32(&self) -> i32
pub fn as_i32(&self) -> i32
Conversion to i32 with overflow checking.
§Panics
Panics if the number is outside the i32 valid range.
pub fn as_u64(&self) -> u64
pub fn as_u64(&self) -> u64
Conversion to u64 with overflow checking.
§Panics
Panics if the number is outside the u64 valid range.
pub fn as_i64(&self) -> i64
pub fn as_i64(&self) -> i64
Conversion to i64 with overflow checking.
§Panics
Panics if the number is outside the i64 valid range.
§impl<const BITS: usize, const LIMBS: usize> Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Signed<BITS, LIMBS>
pub const BYTES: usize = Uint<BITS, LIMBS>::BYTES
pub const BYTES: usize = Uint<BITS, LIMBS>::BYTES
The size of this integer type in bytes. Note that some bits may be forced zero if BITS is not cleanly divisible by eight.
pub const fn from_raw(val: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub const fn from_raw(val: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Coerces an unsigned integer into a signed one. If the unsigned integer is greater than or
equal to 1 << 255
, then the result will overflow into a negative value.
pub fn unchecked_from<T>(val: T) -> Signed<BITS, LIMBS>
pub fn unchecked_from<T>(val: T) -> Signed<BITS, LIMBS>
pub fn unchecked_into<T>(self) -> T
pub fn unchecked_into<T>(self) -> T
pub const fn into_raw(self) -> Uint<BITS, LIMBS>
pub const fn into_raw(self) -> Uint<BITS, LIMBS>
Returns the signed integer as a unsigned integer. If the value of self
negative, then the two’s complement of its absolute value will be
returned.
pub const fn const_eq(&self, other: &Signed<BITS, LIMBS>) -> bool
pub const fn const_eq(&self, other: &Signed<BITS, LIMBS>) -> bool
Compile-time equality. NOT constant-time equality.
pub const fn is_zero(&self) -> bool
pub const fn is_zero(&self) -> bool
Returns true
if self
is zero and false
if the number is negative
or positive.
pub const fn is_positive(&self) -> bool
pub const fn is_positive(&self) -> bool
Returns true
if self
is positive and false
if the number is zero
or negative.
pub const fn is_negative(&self) -> bool
pub const fn is_negative(&self) -> bool
Returns true
if self
is negative and false
if the number is zero
or positive.
pub fn count_ones(&self) -> usize
pub fn count_ones(&self) -> usize
Returns the number of ones in the binary representation of self
.
pub fn count_zeros(&self) -> usize
pub fn count_zeros(&self) -> usize
Returns the number of zeros in the binary representation of self
.
pub fn leading_zeros(&self) -> usize
pub fn leading_zeros(&self) -> usize
Returns the number of leading zeros in the binary representation of
self
.
pub fn trailing_zeros(&self) -> usize
pub fn trailing_zeros(&self) -> usize
Returns the number of leading zeros in the binary representation of
self
.
pub fn trailing_ones(&self) -> usize
pub fn trailing_ones(&self) -> usize
Returns the number of leading ones in the binary representation of
self
.
pub const fn bit(&self, index: usize) -> bool
pub const fn bit(&self, index: usize) -> bool
Returns whether a specific bit is set.
Returns false
if index
exceeds the bit width of the number.
pub const fn byte(&self, index: usize) -> u8
pub const fn byte(&self, index: usize) -> u8
Returns a specific byte. The byte at index 0
is the least significant
byte (little endian).
§Panics
Panics if index
exceeds the byte width of the number.
pub fn overflowing_from_sign_and_abs(
sign: Sign,
abs: Uint<BITS, LIMBS>,
) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_from_sign_and_abs( sign: Sign, abs: Uint<BITS, LIMBS>, ) -> (Signed<BITS, LIMBS>, bool)
Creates a Signed
from a sign and an absolute value. Returns the value
and a bool that is true if the conversion caused an overflow.
pub fn checked_from_sign_and_abs(
sign: Sign,
abs: Uint<BITS, LIMBS>,
) -> Option<Signed<BITS, LIMBS>>
pub fn checked_from_sign_and_abs( sign: Sign, abs: Uint<BITS, LIMBS>, ) -> Option<Signed<BITS, LIMBS>>
Creates a Signed
from an absolute value and a negative flag. Returns
None
if it would overflow as Signed
.
pub fn from_dec_str(
value: &str,
) -> Result<Signed<BITS, LIMBS>, ParseSignedError>
pub fn from_dec_str( value: &str, ) -> Result<Signed<BITS, LIMBS>, ParseSignedError>
Convert from a decimal string.
pub fn to_dec_string(&self) -> String
pub fn to_dec_string(&self) -> String
Convert to a decimal string.
pub fn from_hex_str(
value: &str,
) -> Result<Signed<BITS, LIMBS>, ParseSignedError>
pub fn from_hex_str( value: &str, ) -> Result<Signed<BITS, LIMBS>, ParseSignedError>
Convert from a hex string.
pub fn to_hex_string(&self) -> String
pub fn to_hex_string(&self) -> String
Convert to a hex string.
pub fn into_sign_and_abs(&self) -> (Sign, Uint<BITS, LIMBS>)
pub fn into_sign_and_abs(&self) -> (Sign, Uint<BITS, LIMBS>)
Splits a Signed into its absolute value and negative flag.
pub const fn to_be_bytes<const BYTES: usize>(&self) -> [u8; BYTES]
pub const fn to_be_bytes<const BYTES: usize>(&self) -> [u8; BYTES]
Converts self
to a big-endian byte array of size exactly
Self::BYTES
.
§Panics
Panics if the generic parameter BYTES
is not exactly Self::BYTES
.
Ideally this would be a compile time error, but this is blocked by
Rust issue #60551.
pub const fn to_le_bytes<const BYTES: usize>(&self) -> [u8; BYTES]
pub const fn to_le_bytes<const BYTES: usize>(&self) -> [u8; BYTES]
Converts self
to a little-endian byte array of size exactly
Self::BYTES
.
§Panics
Panics if the generic parameter BYTES
is not exactly Self::BYTES
.
Ideally this would be a compile time error, but this is blocked by
Rust issue #60551.
pub const fn from_be_bytes<const BYTES: usize>(
bytes: [u8; BYTES],
) -> Signed<BITS, LIMBS>
pub const fn from_be_bytes<const BYTES: usize>( bytes: [u8; BYTES], ) -> Signed<BITS, LIMBS>
Converts a big-endian byte array of size exactly Self::BYTES
.
§Panics
Panics if the generic parameter BYTES
is not exactly Self::BYTES
.
Ideally this would be a compile time error, but this is blocked by
Rust issue #60551.
Panics if the value is too large for the bit-size of the Uint.
pub const fn from_le_bytes<const BYTES: usize>(
bytes: [u8; BYTES],
) -> Signed<BITS, LIMBS>
pub const fn from_le_bytes<const BYTES: usize>( bytes: [u8; BYTES], ) -> Signed<BITS, LIMBS>
pub fn try_from_be_slice(slice: &[u8]) -> Option<Signed<BITS, LIMBS>>
pub fn try_from_be_slice(slice: &[u8]) -> Option<Signed<BITS, LIMBS>>
pub fn try_from_le_slice(slice: &[u8]) -> Option<Signed<BITS, LIMBS>>
pub fn try_from_le_slice(slice: &[u8]) -> Option<Signed<BITS, LIMBS>>
pub const fn into_limbs(self) -> [u64; LIMBS]
pub const fn into_limbs(self) -> [u64; LIMBS]
Convert to a array of limbs.
Limbs are least significant first.
pub const fn from_limbs(limbs: [u64; LIMBS]) -> Signed<BITS, LIMBS>
pub const fn from_limbs(limbs: [u64; LIMBS]) -> Signed<BITS, LIMBS>
Construct a new integer from little-endian a array of limbs.
§Panics
Panics if LIMBS
is not equal to nlimbs(BITS)
.
Panics if the value is to large for the bit-size of the Uint.
pub fn from_base_be<I>(
base: u64,
digits: I,
) -> Result<Signed<BITS, LIMBS>, BaseConvertError>where
I: IntoIterator<Item = u64>,
pub fn from_base_be<I>(
base: u64,
digits: I,
) -> Result<Signed<BITS, LIMBS>, BaseConvertError>where
I: IntoIterator<Item = u64>,
Constructs the Signed
from digits in the base base
in big-endian.
Wrapper around ruint’s from_base_be
§Errors
BaseConvertError::InvalidBase
if the base is less than 2.BaseConvertError::InvalidDigit
if a digit is out of range.BaseConvertError::Overflow
if the number is too large to fit.
§impl<const BITS: usize, const LIMBS: usize> Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Signed<BITS, LIMBS>
pub fn abs(self) -> Signed<BITS, LIMBS>
pub fn abs(self) -> Signed<BITS, LIMBS>
Computes the absolute value of self
.
§Overflow behavior
The absolute value of Self::MIN
cannot be represented as Self
and
attempting to calculate it will cause an overflow. This means that code
in debug mode will trigger a panic on this case and optimized code will
return Self::MIN
without a panic.
pub fn overflowing_abs(self) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_abs(self) -> (Signed<BITS, LIMBS>, bool)
Computes the absolute value of self
.
Returns a tuple of the absolute version of self along with a boolean indicating whether an overflow happened. If self is the minimum value then the minimum value will be returned again and true will be returned for an overflow happening.
pub fn checked_abs(self) -> Option<Signed<BITS, LIMBS>>
pub fn checked_abs(self) -> Option<Signed<BITS, LIMBS>>
Checked absolute value. Computes self.abs()
, returning None
if self == MIN
.
pub fn saturating_abs(self) -> Signed<BITS, LIMBS>
pub fn saturating_abs(self) -> Signed<BITS, LIMBS>
Saturating absolute value. Computes self.abs()
, returning MAX
if
self == MIN
instead of overflowing.
pub fn wrapping_abs(self) -> Signed<BITS, LIMBS>
pub fn wrapping_abs(self) -> Signed<BITS, LIMBS>
Wrapping absolute value. Computes self.abs()
, wrapping around at the
boundary of the type.
pub fn unsigned_abs(self) -> Uint<BITS, LIMBS>
pub fn unsigned_abs(self) -> Uint<BITS, LIMBS>
Computes the absolute value of self
without any wrapping or panicking.
pub fn overflowing_neg(self) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_neg(self) -> (Signed<BITS, LIMBS>, bool)
Negates self, overflowing if this is equal to the minimum value.
Returns a tuple of the negated version of self along with a boolean
indicating whether an overflow happened. If self
is the minimum
value, then the minimum value will be returned again and true
will
be returned for an overflow happening.
pub fn checked_neg(self) -> Option<Signed<BITS, LIMBS>>
pub fn checked_neg(self) -> Option<Signed<BITS, LIMBS>>
Checked negation. Computes -self
, returning None
if self == MIN
.
pub fn saturating_neg(self) -> Signed<BITS, LIMBS>
pub fn saturating_neg(self) -> Signed<BITS, LIMBS>
Saturating negation. Computes -self
, returning MAX
if self == MIN
instead of overflowing.
pub fn wrapping_neg(self) -> Signed<BITS, LIMBS>
pub fn wrapping_neg(self) -> Signed<BITS, LIMBS>
Wrapping (modular) negation. Computes -self
, wrapping around at the
boundary of the type.
The only case where such wrapping can occur is when one negates MIN
on
a signed type (where MIN
is the negative minimal value for the
type); this is a positive value that is too large to represent in
the type. In such a case, this function returns MIN
itself.
pub const fn overflowing_add(
self,
rhs: Signed<BITS, LIMBS>,
) -> (Signed<BITS, LIMBS>, bool)
pub const fn overflowing_add( self, rhs: Signed<BITS, LIMBS>, ) -> (Signed<BITS, LIMBS>, bool)
Calculates self
+ rhs
Returns a tuple of the addition along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would have occurred then the wrapped value is returned.
pub const fn checked_add(
self,
rhs: Signed<BITS, LIMBS>,
) -> Option<Signed<BITS, LIMBS>>
pub const fn checked_add( self, rhs: Signed<BITS, LIMBS>, ) -> Option<Signed<BITS, LIMBS>>
Checked integer addition. Computes self + rhs
, returning None
if
overflow occurred.
pub const fn saturating_add(
self,
rhs: Signed<BITS, LIMBS>,
) -> Signed<BITS, LIMBS>
pub const fn saturating_add( self, rhs: Signed<BITS, LIMBS>, ) -> Signed<BITS, LIMBS>
Saturating integer addition. Computes self + rhs
, saturating at the
numeric bounds instead of overflowing.
pub const fn wrapping_add(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub const fn wrapping_add(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Wrapping (modular) addition. Computes self + rhs
, wrapping around at
the boundary of the type.
pub const fn overflowing_sub(
self,
rhs: Signed<BITS, LIMBS>,
) -> (Signed<BITS, LIMBS>, bool)
pub const fn overflowing_sub( self, rhs: Signed<BITS, LIMBS>, ) -> (Signed<BITS, LIMBS>, bool)
Calculates self
- rhs
Returns a tuple of the subtraction along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would have occurred then the wrapped value is returned.
pub const fn checked_sub(
self,
rhs: Signed<BITS, LIMBS>,
) -> Option<Signed<BITS, LIMBS>>
pub const fn checked_sub( self, rhs: Signed<BITS, LIMBS>, ) -> Option<Signed<BITS, LIMBS>>
Checked integer subtraction. Computes self - rhs
, returning None
if
overflow occurred.
pub const fn saturating_sub(
self,
rhs: Signed<BITS, LIMBS>,
) -> Signed<BITS, LIMBS>
pub const fn saturating_sub( self, rhs: Signed<BITS, LIMBS>, ) -> Signed<BITS, LIMBS>
Saturating integer subtraction. Computes self - rhs
, saturating at the
numeric bounds instead of overflowing.
pub const fn wrapping_sub(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub const fn wrapping_sub(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Wrapping (modular) subtraction. Computes self - rhs
, wrapping around
at the boundary of the type.
pub fn overflowing_mul(
self,
rhs: Signed<BITS, LIMBS>,
) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_mul( self, rhs: Signed<BITS, LIMBS>, ) -> (Signed<BITS, LIMBS>, bool)
Calculates self
* rhs
Returns a tuple of the multiplication along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would have occurred then the wrapped value is returned.
pub fn checked_mul(
self,
rhs: Signed<BITS, LIMBS>,
) -> Option<Signed<BITS, LIMBS>>
pub fn checked_mul( self, rhs: Signed<BITS, LIMBS>, ) -> Option<Signed<BITS, LIMBS>>
Checked integer multiplication. Computes self * rhs
, returning None if
overflow occurred.
pub fn saturating_mul(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn saturating_mul(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Saturating integer multiplication. Computes self * rhs
, saturating at
the numeric bounds instead of overflowing.
pub fn wrapping_mul(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn wrapping_mul(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Wrapping (modular) multiplication. Computes self * rhs
, wrapping
around at the boundary of the type.
pub fn overflowing_div(
self,
rhs: Signed<BITS, LIMBS>,
) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_div( self, rhs: Signed<BITS, LIMBS>, ) -> (Signed<BITS, LIMBS>, bool)
Calculates self
/ rhs
Returns a tuple of the divisor along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would occur then self is returned.
§Panics
If rhs
is 0.
pub fn checked_div(
self,
rhs: Signed<BITS, LIMBS>,
) -> Option<Signed<BITS, LIMBS>>
pub fn checked_div( self, rhs: Signed<BITS, LIMBS>, ) -> Option<Signed<BITS, LIMBS>>
Checked integer division. Computes self / rhs
, returning None
if
rhs == 0
or the division results in overflow.
pub fn saturating_div(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn saturating_div(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Saturating integer division. Computes self / rhs
, saturating at the
numeric bounds instead of overflowing.
§Panics
If rhs
is 0.
pub fn wrapping_div(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn wrapping_div(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Wrapping (modular) division. Computes self / rhs
, wrapping around at
the boundary of the type.
The only case where such wrapping can occur is when one divides MIN / -1
on a signed type (where MIN
is the negative minimal value for
the type); this is equivalent to -MIN
, a positive value that is
too large to represent in the type. In such a case, this function
returns MIN
itself.
§Panics
If rhs
is 0.
pub fn overflowing_rem(
self,
rhs: Signed<BITS, LIMBS>,
) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_rem( self, rhs: Signed<BITS, LIMBS>, ) -> (Signed<BITS, LIMBS>, bool)
Calculates self
% rhs
Returns a tuple of the remainder after dividing along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would occur then 0 is returned.
§Panics
If rhs
is 0.
pub fn checked_rem(
self,
rhs: Signed<BITS, LIMBS>,
) -> Option<Signed<BITS, LIMBS>>
pub fn checked_rem( self, rhs: Signed<BITS, LIMBS>, ) -> Option<Signed<BITS, LIMBS>>
Checked integer remainder. Computes self % rhs
, returning None
if
rhs == 0
or the division results in overflow.
pub fn wrapping_rem(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn wrapping_rem(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Wrapping (modular) remainder. Computes self % rhs
, wrapping around at
the boundary of the type.
Such wrap-around never actually occurs mathematically; implementation
artifacts make x % y
invalid for MIN / -1
on a signed type
(where MIN
is the negative minimal value). In such a case, this
function returns 0
.
§Panics
If rhs
is 0.
pub fn div_euclid(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn div_euclid(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Calculates the quotient of Euclidean division of self
by rhs
.
This computes the integer q
such that self = q * rhs + r
, with
r = self.rem_euclid(rhs)
and 0 <= r < abs(rhs)
.
In other words, the result is self / rhs
rounded to the integer q
such that self >= q * rhs
.
If self > 0
, this is equal to round towards zero (the default in
Rust); if self < 0
, this is equal to round towards +/- infinity.
§Panics
If rhs
is 0 or the division results in overflow.
pub fn overflowing_div_euclid(
self,
rhs: Signed<BITS, LIMBS>,
) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_div_euclid( self, rhs: Signed<BITS, LIMBS>, ) -> (Signed<BITS, LIMBS>, bool)
Calculates the quotient of Euclidean division self.div_euclid(rhs)
.
Returns a tuple of the divisor along with a boolean indicating whether
an arithmetic overflow would occur. If an overflow would occur then
self
is returned.
§Panics
If rhs
is 0.
pub fn checked_div_euclid(
self,
rhs: Signed<BITS, LIMBS>,
) -> Option<Signed<BITS, LIMBS>>
pub fn checked_div_euclid( self, rhs: Signed<BITS, LIMBS>, ) -> Option<Signed<BITS, LIMBS>>
Checked Euclidean division. Computes self.div_euclid(rhs)
, returning
None
if rhs == 0
or the division results in overflow.
pub fn wrapping_div_euclid(
self,
rhs: Signed<BITS, LIMBS>,
) -> Signed<BITS, LIMBS>
pub fn wrapping_div_euclid( self, rhs: Signed<BITS, LIMBS>, ) -> Signed<BITS, LIMBS>
Wrapping Euclidean division. Computes self.div_euclid(rhs)
,
wrapping around at the boundary of the type.
Wrapping will only occur in MIN / -1
on a signed type (where MIN
is
the negative minimal value for the type). This is equivalent to
-MIN
, a positive value that is too large to represent in the type.
In this case, this method returns MIN
itself.
§Panics
If rhs
is 0.
pub fn rem_euclid(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn rem_euclid(self, rhs: Signed<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Calculates the least nonnegative remainder of self (mod rhs)
.
This is done as if by the Euclidean division algorithm – given r = self.rem_euclid(rhs)
, self = rhs * self.div_euclid(rhs) + r
, and
0 <= r < abs(rhs)
.
§Panics
If rhs
is 0 or the division results in overflow.
pub fn overflowing_rem_euclid(
self,
rhs: Signed<BITS, LIMBS>,
) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_rem_euclid( self, rhs: Signed<BITS, LIMBS>, ) -> (Signed<BITS, LIMBS>, bool)
Overflowing Euclidean remainder. Calculates self.rem_euclid(rhs)
.
Returns a tuple of the remainder after dividing along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would occur then 0 is returned.
§Panics
If rhs
is 0.
pub fn wrapping_rem_euclid(
self,
rhs: Signed<BITS, LIMBS>,
) -> Signed<BITS, LIMBS>
pub fn wrapping_rem_euclid( self, rhs: Signed<BITS, LIMBS>, ) -> Signed<BITS, LIMBS>
Wrapping Euclidean remainder. Computes self.rem_euclid(rhs)
, wrapping
around at the boundary of the type.
Wrapping will only occur in MIN % -1
on a signed type (where MIN
is
the negative minimal value for the type). In this case, this method
returns 0.
§Panics
If rhs
is 0.
pub fn checked_rem_euclid(
self,
rhs: Signed<BITS, LIMBS>,
) -> Option<Signed<BITS, LIMBS>>
pub fn checked_rem_euclid( self, rhs: Signed<BITS, LIMBS>, ) -> Option<Signed<BITS, LIMBS>>
Checked Euclidean remainder. Computes self.rem_euclid(rhs)
, returning
None
if rhs == 0
or the division results in overflow.
pub fn pow(self, exp: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn pow(self, exp: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Raises self to the power of exp
, using exponentiation by squaring.
§Panics
If the result overflows the type in debug mode.
pub fn overflowing_pow(
self,
exp: Uint<BITS, LIMBS>,
) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_pow( self, exp: Uint<BITS, LIMBS>, ) -> (Signed<BITS, LIMBS>, bool)
Raises self to the power of exp
, using exponentiation by squaring.
Returns a tuple of the exponentiation along with a bool indicating whether an overflow happened.
pub fn checked_pow(self, exp: Uint<BITS, LIMBS>) -> Option<Signed<BITS, LIMBS>>
pub fn checked_pow(self, exp: Uint<BITS, LIMBS>) -> Option<Signed<BITS, LIMBS>>
Checked exponentiation. Computes self.pow(exp)
, returning None
if
overflow occurred.
pub fn saturating_pow(self, exp: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn saturating_pow(self, exp: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Saturating integer exponentiation. Computes self.pow(exp)
, saturating
at the numeric bounds instead of overflowing.
pub fn wrapping_pow(self, exp: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>
pub fn wrapping_pow(self, exp: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>
Raises self to the power of exp
, wrapping around at the
boundary of the type.
pub fn overflowing_shl(self, rhs: usize) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_shl(self, rhs: usize) -> (Signed<BITS, LIMBS>, bool)
Shifts self left by rhs
bits.
Returns a tuple of the shifted version of self along with a boolean indicating whether the shift value was larger than or equal to the number of bits.
pub fn checked_shl(self, rhs: usize) -> Option<Signed<BITS, LIMBS>>
pub fn checked_shl(self, rhs: usize) -> Option<Signed<BITS, LIMBS>>
Checked shift left. Computes self << rhs
, returning None
if rhs
is
larger than or equal to the number of bits in self
.
pub fn wrapping_shl(self, rhs: usize) -> Signed<BITS, LIMBS>
pub fn wrapping_shl(self, rhs: usize) -> Signed<BITS, LIMBS>
Wrapping shift left. Computes self << rhs
, returning 0 if larger than
or equal to the number of bits in self
.
pub fn overflowing_shr(self, rhs: usize) -> (Signed<BITS, LIMBS>, bool)
pub fn overflowing_shr(self, rhs: usize) -> (Signed<BITS, LIMBS>, bool)
Shifts self right by rhs
bits.
Returns a tuple of the shifted version of self along with a boolean indicating whether the shift value was larger than or equal to the number of bits.
pub fn checked_shr(self, rhs: usize) -> Option<Signed<BITS, LIMBS>>
pub fn checked_shr(self, rhs: usize) -> Option<Signed<BITS, LIMBS>>
Checked shift right. Computes self >> rhs
, returning None
if rhs
is larger than or equal to the number of bits in self
.
pub fn wrapping_shr(self, rhs: usize) -> Signed<BITS, LIMBS>
pub fn wrapping_shr(self, rhs: usize) -> Signed<BITS, LIMBS>
Wrapping shift right. Computes self >> rhs
, returning 0 if larger than
or equal to the number of bits in self
.
pub fn asr(self, rhs: usize) -> Signed<BITS, LIMBS>
pub fn asr(self, rhs: usize) -> Signed<BITS, LIMBS>
Arithmetic shift right operation. Computes self >> rhs
maintaining the
original sign. If the number is positive this is the same as logic
shift right.
pub fn asl(self, rhs: usize) -> Option<Signed<BITS, LIMBS>>
pub fn asl(self, rhs: usize) -> Option<Signed<BITS, LIMBS>>
Arithmetic shift left operation. Computes self << rhs
, checking for
overflow on the final result.
Returns None
if the operation overflowed (most significant bit
changes).
pub fn twos_complement(self) -> Uint<BITS, LIMBS>
pub fn twos_complement(self) -> Uint<BITS, LIMBS>
Compute the two’s complement of this number.
Trait Implementations§
§impl<T, const BITS: usize, const LIMBS: usize> AddAssign<T> for Signed<BITS, LIMBS>
impl<T, const BITS: usize, const LIMBS: usize> AddAssign<T> for Signed<BITS, LIMBS>
§fn add_assign(&mut self, rhs: T)
fn add_assign(&mut self, rhs: T)
+=
operation. Read more§impl<'arbitrary, const BITS: usize, const LIMBS: usize> Arbitrary<'arbitrary> for Signed<BITS, LIMBS>
impl<'arbitrary, const BITS: usize, const LIMBS: usize> Arbitrary<'arbitrary> for Signed<BITS, LIMBS>
§fn arbitrary(
u: &mut Unstructured<'arbitrary>,
) -> Result<Signed<BITS, LIMBS>, Error>
fn arbitrary( u: &mut Unstructured<'arbitrary>, ) -> Result<Signed<BITS, LIMBS>, Error>
Self
from the given unstructured data. Read more§fn arbitrary_take_rest(
u: Unstructured<'arbitrary>,
) -> Result<Signed<BITS, LIMBS>, Error>
fn arbitrary_take_rest( u: Unstructured<'arbitrary>, ) -> Result<Signed<BITS, LIMBS>, Error>
Self
from the entirety of the given
unstructured data. Read more§impl<const BITS: usize, const LIMBS: usize> Arbitrary for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Arbitrary for Signed<BITS, LIMBS>
§type Parameters = <Uint<BITS, LIMBS> as Arbitrary>::Parameters
type Parameters = <Uint<BITS, LIMBS> as Arbitrary>::Parameters
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.§type Strategy = Map<<Uint<BITS, LIMBS> as Arbitrary>::Strategy, fn(_: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>>
type Strategy = Map<<Uint<BITS, LIMBS> as Arbitrary>::Strategy, fn(_: Uint<BITS, LIMBS>) -> Signed<BITS, LIMBS>>
Strategy
used to generate values of type Self
.§fn arbitrary_with(
_top: <Signed<BITS, LIMBS> as Arbitrary>::Parameters,
) -> <Signed<BITS, LIMBS> as Arbitrary>::Strategy
fn arbitrary_with( _top: <Signed<BITS, LIMBS> as Arbitrary>::Parameters, ) -> <Signed<BITS, LIMBS> as Arbitrary>::Strategy
§impl<const BITS: usize, const LIMBS: usize> BitAndAssign for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> BitAndAssign for Signed<BITS, LIMBS>
§fn bitand_assign(&mut self, rhs: Signed<BITS, LIMBS>)
fn bitand_assign(&mut self, rhs: Signed<BITS, LIMBS>)
&=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> BitOrAssign for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> BitOrAssign for Signed<BITS, LIMBS>
§fn bitor_assign(&mut self, rhs: Signed<BITS, LIMBS>)
fn bitor_assign(&mut self, rhs: Signed<BITS, LIMBS>)
|=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> BitXorAssign for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> BitXorAssign for Signed<BITS, LIMBS>
§fn bitxor_assign(&mut self, rhs: Signed<BITS, LIMBS>)
fn bitxor_assign(&mut self, rhs: Signed<BITS, LIMBS>)
^=
operation. Read more§impl<'de, const BITS: usize, const LIMBS: usize> Deserialize<'de> for Signed<BITS, LIMBS>
impl<'de, const BITS: usize, const LIMBS: usize> Deserialize<'de> for Signed<BITS, LIMBS>
§fn deserialize<D>(
deserializer: D,
) -> Result<Signed<BITS, LIMBS>, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<Signed<BITS, LIMBS>, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
§impl<T, const BITS: usize, const LIMBS: usize> DivAssign<T> for Signed<BITS, LIMBS>
impl<T, const BITS: usize, const LIMBS: usize> DivAssign<T> for Signed<BITS, LIMBS>
§fn div_assign(&mut self, rhs: T)
fn div_assign(&mut self, rhs: T)
/=
operation. Read more§impl From<FixedBytes<1>> for Signed<8, 1>
impl From<FixedBytes<1>> for Signed<8, 1>
§fn from(value: FixedBytes<1>) -> Signed<8, 1>
fn from(value: FixedBytes<1>) -> Signed<8, 1>
Converts a fixed byte array into a fixed-width unsigned integer by interpreting the bytes as big-endian.
§impl From<FixedBytes<16>> for Signed<128, 2>
impl From<FixedBytes<16>> for Signed<128, 2>
§fn from(value: FixedBytes<16>) -> Signed<128, 2>
fn from(value: FixedBytes<16>) -> Signed<128, 2>
Converts a fixed byte array into a fixed-width unsigned integer by interpreting the bytes as big-endian.
§impl From<FixedBytes<2>> for Signed<16, 1>
impl From<FixedBytes<2>> for Signed<16, 1>
§fn from(value: FixedBytes<2>) -> Signed<16, 1>
fn from(value: FixedBytes<2>) -> Signed<16, 1>
Converts a fixed byte array into a fixed-width unsigned integer by interpreting the bytes as big-endian.
§impl From<FixedBytes<20>> for Signed<160, 3>
impl From<FixedBytes<20>> for Signed<160, 3>
§fn from(value: FixedBytes<20>) -> Signed<160, 3>
fn from(value: FixedBytes<20>) -> Signed<160, 3>
Converts a fixed byte array into a fixed-width unsigned integer by interpreting the bytes as big-endian.
§impl From<FixedBytes<32>> for Signed<256, 4>
impl From<FixedBytes<32>> for Signed<256, 4>
§fn from(value: FixedBytes<32>) -> Signed<256, 4>
fn from(value: FixedBytes<32>) -> Signed<256, 4>
Converts a fixed byte array into a fixed-width unsigned integer by interpreting the bytes as big-endian.
§impl From<FixedBytes<4>> for Signed<32, 1>
impl From<FixedBytes<4>> for Signed<32, 1>
§fn from(value: FixedBytes<4>) -> Signed<32, 1>
fn from(value: FixedBytes<4>) -> Signed<32, 1>
Converts a fixed byte array into a fixed-width unsigned integer by interpreting the bytes as big-endian.
§impl From<FixedBytes<64>> for Signed<512, 8>
impl From<FixedBytes<64>> for Signed<512, 8>
§fn from(value: FixedBytes<64>) -> Signed<512, 8>
fn from(value: FixedBytes<64>) -> Signed<512, 8>
Converts a fixed byte array into a fixed-width unsigned integer by interpreting the bytes as big-endian.
§impl From<FixedBytes<8>> for Signed<64, 1>
impl From<FixedBytes<8>> for Signed<64, 1>
§fn from(value: FixedBytes<8>) -> Signed<64, 1>
fn from(value: FixedBytes<8>) -> Signed<64, 1>
Converts a fixed byte array into a fixed-width unsigned integer by interpreting the bytes as big-endian.
§impl From<ParseUnits> for Signed<256, 4>
impl From<ParseUnits> for Signed<256, 4>
§fn from(value: ParseUnits) -> Signed<256, 4>
fn from(value: ParseUnits) -> Signed<256, 4>
§impl From<Signed<128, 2>> for FixedBytes<16>
impl From<Signed<128, 2>> for FixedBytes<16>
§fn from(value: Signed<128, 2>) -> FixedBytes<16>
fn from(value: Signed<128, 2>) -> FixedBytes<16>
Converts a fixed-width unsigned integer into a fixed byte array by interpreting the bytes as big-endian.
§impl From<Signed<16, 1>> for FixedBytes<2>
impl From<Signed<16, 1>> for FixedBytes<2>
§fn from(value: Signed<16, 1>) -> FixedBytes<2>
fn from(value: Signed<16, 1>) -> FixedBytes<2>
Converts a fixed-width unsigned integer into a fixed byte array by interpreting the bytes as big-endian.
§impl From<Signed<160, 3>> for FixedBytes<20>
impl From<Signed<160, 3>> for FixedBytes<20>
§fn from(value: Signed<160, 3>) -> FixedBytes<20>
fn from(value: Signed<160, 3>) -> FixedBytes<20>
Converts a fixed-width unsigned integer into a fixed byte array by interpreting the bytes as big-endian.
§impl From<Signed<256, 4>> for FixedBytes<32>
impl From<Signed<256, 4>> for FixedBytes<32>
§fn from(value: Signed<256, 4>) -> FixedBytes<32>
fn from(value: Signed<256, 4>) -> FixedBytes<32>
Converts a fixed-width unsigned integer into a fixed byte array by interpreting the bytes as big-endian.
Source§impl From<Signed<256, 4>> for NumberWithBase
impl From<Signed<256, 4>> for NumberWithBase
§impl From<Signed<256, 4>> for ParseUnits
impl From<Signed<256, 4>> for ParseUnits
§fn from(value: Signed<256, 4>) -> ParseUnits
fn from(value: Signed<256, 4>) -> ParseUnits
§impl From<Signed<32, 1>> for FixedBytes<4>
impl From<Signed<32, 1>> for FixedBytes<4>
§fn from(value: Signed<32, 1>) -> FixedBytes<4>
fn from(value: Signed<32, 1>) -> FixedBytes<4>
Converts a fixed-width unsigned integer into a fixed byte array by interpreting the bytes as big-endian.
§impl From<Signed<512, 8>> for FixedBytes<64>
impl From<Signed<512, 8>> for FixedBytes<64>
§fn from(value: Signed<512, 8>) -> FixedBytes<64>
fn from(value: Signed<512, 8>) -> FixedBytes<64>
Converts a fixed-width unsigned integer into a fixed byte array by interpreting the bytes as big-endian.
§impl From<Signed<64, 1>> for FixedBytes<8>
impl From<Signed<64, 1>> for FixedBytes<8>
§fn from(value: Signed<64, 1>) -> FixedBytes<8>
fn from(value: Signed<64, 1>) -> FixedBytes<8>
Converts a fixed-width unsigned integer into a fixed byte array by interpreting the bytes as big-endian.
§impl From<Signed<8, 1>> for FixedBytes<1>
impl From<Signed<8, 1>> for FixedBytes<1>
§fn from(value: Signed<8, 1>) -> FixedBytes<1>
fn from(value: Signed<8, 1>) -> FixedBytes<1>
Converts a fixed-width unsigned integer into a fixed byte array by interpreting the bytes as big-endian.
§impl<T, const BITS: usize, const LIMBS: usize> MulAssign<T> for Signed<BITS, LIMBS>
impl<T, const BITS: usize, const LIMBS: usize> MulAssign<T> for Signed<BITS, LIMBS>
§fn mul_assign(&mut self, rhs: T)
fn mul_assign(&mut self, rhs: T)
*=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> Ord for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Ord for Signed<BITS, LIMBS>
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
§impl<const BITS: usize, const LIMBS: usize> PartialOrd for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> PartialOrd for Signed<BITS, LIMBS>
§impl<T, const BITS: usize, const LIMBS: usize> RemAssign<T> for Signed<BITS, LIMBS>
impl<T, const BITS: usize, const LIMBS: usize> RemAssign<T> for Signed<BITS, LIMBS>
§fn rem_assign(&mut self, rhs: T)
fn rem_assign(&mut self, rhs: T)
%=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> Serialize for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Serialize for Signed<BITS, LIMBS>
§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
§impl<const BITS: usize, const LIMBS: usize> ShlAssign<i16> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<i16> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: i16)
fn shl_assign(&mut self, rhs: i16)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShlAssign<i32> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<i32> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: i32)
fn shl_assign(&mut self, rhs: i32)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShlAssign<i64> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<i64> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: i64)
fn shl_assign(&mut self, rhs: i64)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShlAssign<i8> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<i8> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: i8)
fn shl_assign(&mut self, rhs: i8)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShlAssign<isize> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<isize> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: isize)
fn shl_assign(&mut self, rhs: isize)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShlAssign<u16> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<u16> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: u16)
fn shl_assign(&mut self, rhs: u16)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShlAssign<u32> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<u32> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: u32)
fn shl_assign(&mut self, rhs: u32)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShlAssign<u64> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<u64> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: u64)
fn shl_assign(&mut self, rhs: u64)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShlAssign<u8> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<u8> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: u8)
fn shl_assign(&mut self, rhs: u8)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShlAssign<usize> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShlAssign<usize> for Signed<BITS, LIMBS>
§fn shl_assign(&mut self, rhs: usize)
fn shl_assign(&mut self, rhs: usize)
<<=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<i16> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<i16> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: i16)
fn shr_assign(&mut self, rhs: i16)
>>=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<i32> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<i32> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: i32)
fn shr_assign(&mut self, rhs: i32)
>>=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<i64> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<i64> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: i64)
fn shr_assign(&mut self, rhs: i64)
>>=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<i8> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<i8> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: i8)
fn shr_assign(&mut self, rhs: i8)
>>=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<isize> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<isize> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: isize)
fn shr_assign(&mut self, rhs: isize)
>>=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<u16> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<u16> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: u16)
fn shr_assign(&mut self, rhs: u16)
>>=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<u32> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<u32> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: u32)
fn shr_assign(&mut self, rhs: u32)
>>=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<u64> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<u64> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: u64)
fn shr_assign(&mut self, rhs: u64)
>>=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<u8> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<u8> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: u8)
fn shr_assign(&mut self, rhs: u8)
>>=
operation. Read more§impl<const BITS: usize, const LIMBS: usize> ShrAssign<usize> for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> ShrAssign<usize> for Signed<BITS, LIMBS>
§fn shr_assign(&mut self, rhs: usize)
fn shr_assign(&mut self, rhs: usize)
>>=
operation. Read more§impl SolValue for Signed<104, 2>
impl SolValue for Signed<104, 2>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<112, 2>
impl SolValue for Signed<112, 2>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<120, 2>
impl SolValue for Signed<120, 2>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<136, 3>
impl SolValue for Signed<136, 3>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<144, 3>
impl SolValue for Signed<144, 3>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<152, 3>
impl SolValue for Signed<152, 3>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<160, 3>
impl SolValue for Signed<160, 3>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<168, 3>
impl SolValue for Signed<168, 3>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<176, 3>
impl SolValue for Signed<176, 3>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<184, 3>
impl SolValue for Signed<184, 3>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<192, 3>
impl SolValue for Signed<192, 3>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<200, 4>
impl SolValue for Signed<200, 4>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<208, 4>
impl SolValue for Signed<208, 4>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<216, 4>
impl SolValue for Signed<216, 4>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<224, 4>
impl SolValue for Signed<224, 4>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<232, 4>
impl SolValue for Signed<232, 4>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<24, 1>
impl SolValue for Signed<24, 1>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<240, 4>
impl SolValue for Signed<240, 4>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<248, 4>
impl SolValue for Signed<248, 4>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<256, 4>
impl SolValue for Signed<256, 4>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<40, 1>
impl SolValue for Signed<40, 1>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<48, 1>
impl SolValue for Signed<48, 1>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<56, 1>
impl SolValue for Signed<56, 1>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<72, 2>
impl SolValue for Signed<72, 2>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<80, 2>
impl SolValue for Signed<80, 2>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<88, 2>
impl SolValue for Signed<88, 2>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl SolValue for Signed<96, 2>
impl SolValue for Signed<96, 2>
§fn sol_type_name(&self) -> Cow<'static, str>
fn sol_type_name(&self) -> Cow<'static, str>
sol_name
instead§fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
fn tokenize(&self) -> <Self::SolType as SolType>::Token<'_>
§fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
fn detokenize(token: <Self::SolType as SolType>::Token<'_>) -> Selfwhere
Self: From<<Self::SolType as SolType>::RustType>,
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn eip712_data_word(&self) -> FixedBytes<32>
fn eip712_data_word(&self) -> FixedBytes<32>
encodeData
rules, and hash it
if necessary. Read more§fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
fn abi_encode_packed_to(&self, out: &mut Vec<u8>)
§fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_sequence(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
fn abi_encode_params(&self) -> Vec<u8> ⓘwhere
<Self::SolType as SolType>::Token<'a>: for<'a> TokenSeq<'a>,
§fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
fn abi_decode(data: &[u8], validate: bool) -> Result<Self, Error>where
Self: From<<Self::SolType as SolType>::RustType>,
§impl<T, const BITS: usize, const LIMBS: usize> SubAssign<T> for Signed<BITS, LIMBS>
impl<T, const BITS: usize, const LIMBS: usize> SubAssign<T> for Signed<BITS, LIMBS>
§fn sub_assign(&mut self, rhs: T)
fn sub_assign(&mut self, rhs: T)
-=
operation. Read moreimpl<const BITS: usize, const LIMBS: usize> Copy for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Eq for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> StructuralPartialEq for Signed<BITS, LIMBS>
Auto Trait Implementations§
impl<const BITS: usize, const LIMBS: usize> Freeze for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> RefUnwindSafe for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Send for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Sync for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> Unpin for Signed<BITS, LIMBS>
impl<const BITS: usize, const LIMBS: usize> UnwindSafe for Signed<BITS, LIMBS>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§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
key
and return true
if they are equal.§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
self
to key
and returns true
if they are equal.§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
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§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> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute
] value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
[Quirk
] value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition
] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
§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> Pointable for T
impl<T> Pointable for T
§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> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T, Rhs, Output> GroupOps<Rhs, Output> for T
impl<T> MaybeSendSync for T
impl<T, Rhs> NumAssignOps<Rhs> for T
impl<T, Rhs, Output> NumOps<Rhs, Output> for T
impl<T> RpcObject for Twhere
T: RpcParam + RpcReturn,
impl<T> RpcParam for T
impl<T> RpcReturn for T
impl<T, Rhs, Output> ScalarMul<Rhs, Output> for T
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.