pub struct BigInt<M: ManagedTypeApi> { /* private fields */ }Implementations§
Source§impl<M: ManagedTypeApi> BigInt<M>
impl<M: ManagedTypeApi> BigInt<M>
Sourcepub unsafe fn new_uninit() -> Self
pub unsafe fn new_uninit() -> Self
Creates a new object, without initializing it.
§Safety
The value needs to be initialized after creation, otherwise the VM will halt the first time the value is attempted to be read.
§Panic / unwind safety
If the caller unwinds (panics) before the returned value is fully initialized, the
BigInt is dropped normally — which issues a drop_big_int call for an uninitialized
handle. This may corrupt the VM handle table. Callers must ensure initialization
completes before any panic can occur.
Sourcepub unsafe fn new_init_handle<F>(init_fn: F) -> Selfwhere
F: FnOnce(M::BigIntHandle),
pub unsafe fn new_init_handle<F>(init_fn: F) -> Selfwhere
F: FnOnce(M::BigIntHandle),
Creates a new object and initializes it via a closure that receives the raw handle.
§Safety
The closure init_fn must fully initialize the value behind the handle before returning.
§Panic / unwind safety
If init_fn unwinds (panics), the partially-constructed BigInt is leaked — its
destructor is not called. This means no drop_big_int call will be issued for the
allocated handle, which may leave the VM handle table in an inconsistent state.
Callers must ensure that init_fn does not panic.
Source§impl<M: ManagedTypeApi> BigInt<M>
impl<M: ManagedTypeApi> BigInt<M>
pub fn zero() -> Self
pub fn to_i64(&self) -> Option<i64>
pub fn overwrite_i64(&mut self, value: i64)
pub fn from_signed_bytes_be(bytes: &[u8]) -> Self
pub fn to_signed_bytes_be(&self) -> BoxedBytes
pub fn from_signed_bytes_be_buffer(managed_buffer: &ManagedBuffer<M>) -> Self
pub fn to_signed_bytes_be_buffer(&self) -> ManagedBuffer<M>
Source§impl<M: ManagedTypeApi> BigInt<M>
impl<M: ManagedTypeApi> BigInt<M>
pub fn from_biguint(sign: Sign, unsigned: BigUint<M>) -> Self
Sourcepub fn to_parts(self) -> (Sign, BigUint<M>)
pub fn to_parts(self) -> (Sign, BigUint<M>)
Convert this BigInt into its Sign and BigUint magnitude,
the reverse of BigInt::from_biguint.
Sourcepub unsafe fn into_big_uint_unchecked(self) -> BigUint<M>
pub unsafe fn into_big_uint_unchecked(self) -> BigUint<M>
Converts to an unsigned BigUint, without performing any checks.
§Safety
If the number is negative, undefined behavior might occur further down the execution.
Sourcepub fn into_big_uint(self) -> ManagedOption<M, BigUint<M>>
pub fn into_big_uint(self) -> ManagedOption<M, BigUint<M>>
Converts this BigInt into a BigUint, if it’s not negative.
Source§impl<M: ManagedTypeApi> BigInt<M>
impl<M: ManagedTypeApi> BigInt<M>
pub fn pow(&self, exp: u32) -> Self
Sourcepub fn into_proportion(self, part: i64, total: i64) -> Self
pub fn into_proportion(self, part: i64, total: i64) -> Self
Sourcepub fn proportion(&self, part: i64, total: i64) -> Self
pub fn proportion(&self, part: i64, total: i64) -> Self
Sourcepub fn to_display(&self) -> ManagedBuffer<M>
pub fn to_display(&self) -> ManagedBuffer<M>
Creates a managed buffer containing the textual representation of the number.
Trait Implementations§
Source§impl<M: ManagedTypeApi> Add for BigInt<M>
impl<M: ManagedTypeApi> Add for BigInt<M>
Source§impl<M: ManagedTypeApi> AddAssign<&BigInt<M>> for BigInt<M>
impl<M: ManagedTypeApi> AddAssign<&BigInt<M>> for BigInt<M>
Source§fn add_assign(&mut self, other: &BigInt<M>)
fn add_assign(&mut self, other: &BigInt<M>)
+= operation. Read moreSource§impl<M: ManagedTypeApi> AddAssign for BigInt<M>
impl<M: ManagedTypeApi> AddAssign for BigInt<M>
Source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+= operation. Read moreSource§impl<M: ManagedTypeApi> Clone for BigInt<M>
impl<M: ManagedTypeApi> Clone for BigInt<M>
Source§impl<M: ManagedTypeApi> Debug for BigInt<M>
impl<M: ManagedTypeApi> Debug for BigInt<M>
Source§impl<M: ManagedTypeApi> Default for BigInt<M>
impl<M: ManagedTypeApi> Default for BigInt<M>
Source§impl<M: ManagedTypeApi> Display for BigInt<M>
Available on crate feature alloc only.
impl<M: ManagedTypeApi> Display for BigInt<M>
alloc only.Source§impl<M: ManagedTypeApi> Div for BigInt<M>
impl<M: ManagedTypeApi> Div for BigInt<M>
Source§impl<M: ManagedTypeApi> DivAssign<&BigInt<M>> for BigInt<M>
impl<M: ManagedTypeApi> DivAssign<&BigInt<M>> for BigInt<M>
Source§fn div_assign(&mut self, other: &BigInt<M>)
fn div_assign(&mut self, other: &BigInt<M>)
/= operation. Read moreSource§impl<M: ManagedTypeApi> DivAssign for BigInt<M>
impl<M: ManagedTypeApi> DivAssign for BigInt<M>
Source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/= operation. Read moreSource§impl<M: ManagedTypeApi> Drop for BigInt<M>
impl<M: ManagedTypeApi> Drop for BigInt<M>
Source§impl<M: ManagedTypeApi> From<&BigInt> for BigInt<M>
Available on crate feature num-bigint only.
impl<M: ManagedTypeApi> From<&BigInt> for BigInt<M>
num-bigint only.Source§impl<M: ManagedTypeApi> From<&ManagedBuffer<M>> for BigInt<M>
impl<M: ManagedTypeApi> From<&ManagedBuffer<M>> for BigInt<M>
Source§fn from(item: &ManagedBuffer<M>) -> Self
fn from(item: &ManagedBuffer<M>) -> Self
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<BigInt<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<BigInt<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§impl<M: ManagedTypeApi> From<BigInt> for BigInt<M>
Available on crate feature num-bigint only.
impl<M: ManagedTypeApi> From<BigInt> for BigInt<M>
num-bigint only.Source§impl<M: ManagedTypeApi> From<ManagedBuffer<M>> for BigInt<M>
impl<M: ManagedTypeApi> From<ManagedBuffer<M>> for BigInt<M>
Source§fn from(item: ManagedBuffer<M>) -> Self
fn from(item: ManagedBuffer<M>) -> Self
Source§impl<M: ManagedTypeApi> ManagedType<M> for BigInt<M>
impl<M: ManagedTypeApi> ManagedType<M> for BigInt<M>
type OwnHandle = <M as HandleTypeInfo>::BigIntHandle
fn get_handle(&self) -> M::BigIntHandle
Source§unsafe fn forget_into_handle(self) -> Self::OwnHandle
unsafe fn forget_into_handle(self) -> Self::OwnHandle
Source§fn transmute_from_handle_ref(handle_ref: &M::BigIntHandle) -> &Self
fn transmute_from_handle_ref(handle_ref: &M::BigIntHandle) -> &Self
fn transmute_from_handle_ref_mut(handle_ref: &mut M::BigIntHandle) -> &mut Self
fn get_raw_handle(&self) -> RawHandle
fn get_raw_handle_unchecked(&self) -> RawHandle
fn as_ref(&self) -> ManagedRef<'_, M, Self>
Source§impl<M: ManagedTypeApi> ManagedVecItem for BigInt<M>
impl<M: ManagedTypeApi> ManagedVecItem for BigInt<M>
Source§const SKIPS_RESERIALIZATION: bool = false
const SKIPS_RESERIALIZATION: bool = false
u32).Source§type PAYLOAD = ManagedVecItemPayloadBuffer<UInt<UInt<UInt<UTerm, B1>, B0>, B0>>
type PAYLOAD = ManagedVecItemPayloadBuffer<UInt<UInt<UInt<UTerm, B1>, B0>, B0>>
Source§type Ref<'a> = ManagedRef<'a, M, BigInt<M>>
type Ref<'a> = ManagedRef<'a, M, BigInt<M>>
Source§unsafe fn read_from_payload(payload: &Self::PAYLOAD) -> Self
unsafe fn read_from_payload(payload: &Self::PAYLOAD) -> Self
Source§unsafe fn borrow_from_payload<'a>(payload: &Self::PAYLOAD) -> Self::Ref<'a>
unsafe fn borrow_from_payload<'a>(payload: &Self::PAYLOAD) -> Self::Ref<'a>
Source§fn save_to_payload(self, payload: &mut Self::PAYLOAD)
fn save_to_payload(self, payload: &mut Self::PAYLOAD)
Source§fn requires_drop() -> bool
fn requires_drop() -> bool
fn payload_size() -> usize
fn temp_decode<F, R>(payload: &Self::PAYLOAD, f: F) -> Rwhere
F: FnOnce(&Self) -> R,
Source§impl<M: ManagedTypeApi> Mul for BigInt<M>
impl<M: ManagedTypeApi> Mul for BigInt<M>
Source§impl<M: ManagedTypeApi> MulAssign<&BigInt<M>> for BigInt<M>
impl<M: ManagedTypeApi> MulAssign<&BigInt<M>> for BigInt<M>
Source§fn mul_assign(&mut self, other: &BigInt<M>)
fn mul_assign(&mut self, other: &BigInt<M>)
*= operation. Read moreSource§impl<M: ManagedTypeApi> MulAssign for BigInt<M>
impl<M: ManagedTypeApi> MulAssign for BigInt<M>
Source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*= operation. Read moreSource§impl<M: ManagedTypeApi> Neg for BigInt<M>
impl<M: ManagedTypeApi> Neg for BigInt<M>
Source§impl<M: ManagedTypeApi> NestedDecode for BigInt<M>
impl<M: ManagedTypeApi> NestedDecode for BigInt<M>
Source§fn dep_decode_or_handle_err<I, H>(
input: &mut I,
h: H,
) -> Result<Self, H::HandledErr>where
I: NestedDecodeInput,
H: DecodeErrorHandler,
fn dep_decode_or_handle_err<I, H>(
input: &mut I,
h: H,
) -> Result<Self, H::HandledErr>where
I: NestedDecodeInput,
H: DecodeErrorHandler,
dep_decode that can handle errors as soon as they occur.
For instance in can exit immediately and make sure that if it returns, it is a success.
By not deferring error handling, this can lead to somewhat smaller bytecode.Source§fn dep_decode<I>(input: &mut I) -> Result<Self, DecodeError>where
I: NestedDecodeInput,
fn dep_decode<I>(input: &mut I) -> Result<Self, DecodeError>where
I: NestedDecodeInput,
Source§impl<M: ManagedTypeApi> NestedEncode for BigInt<M>
impl<M: ManagedTypeApi> NestedEncode for BigInt<M>
Source§fn dep_encode_or_handle_err<O, H>(
&self,
dest: &mut O,
h: H,
) -> Result<(), H::HandledErr>where
O: NestedEncodeOutput,
H: EncodeErrorHandler,
fn dep_encode_or_handle_err<O, H>(
&self,
dest: &mut O,
h: H,
) -> Result<(), H::HandledErr>where
O: NestedEncodeOutput,
H: EncodeErrorHandler,
dep_encode that can handle errors as soon as they occur.
For instance in can exit immediately and make sure that if it returns, it is a success.
By not deferring error handling, this can lead to somewhat smaller bytecode.Source§fn dep_encode<O>(&self, dest: &mut O) -> Result<(), EncodeError>where
O: NestedEncodeOutput,
fn dep_encode<O>(&self, dest: &mut O) -> Result<(), EncodeError>where
O: NestedEncodeOutput,
Source§impl<M: ManagedTypeApi> Ord for BigInt<M>
impl<M: ManagedTypeApi> Ord for BigInt<M>
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<M: ManagedTypeApi> PartialEq for BigInt<M>
impl<M: ManagedTypeApi> PartialEq for BigInt<M>
Source§impl<M: ManagedTypeApi> PartialOrd<BigInt<M>> for BigFloat<M>
impl<M: ManagedTypeApi> PartialOrd<BigInt<M>> for BigFloat<M>
Source§impl<M: ManagedTypeApi> PartialOrd<i32> for BigInt<M>
impl<M: ManagedTypeApi> PartialOrd<i32> for BigInt<M>
Source§impl<M: ManagedTypeApi> PartialOrd<i64> for BigInt<M>
impl<M: ManagedTypeApi> PartialOrd<i64> for BigInt<M>
Source§impl<M: ManagedTypeApi> PartialOrd<u32> for BigInt<M>
impl<M: ManagedTypeApi> PartialOrd<u32> for BigInt<M>
Source§impl<M: ManagedTypeApi> PartialOrd<u64> for BigInt<M>
impl<M: ManagedTypeApi> PartialOrd<u64> for BigInt<M>
Source§impl<M: ManagedTypeApi> PartialOrd for BigInt<M>
impl<M: ManagedTypeApi> PartialOrd for BigInt<M>
Source§impl<M: ManagedTypeApi> Rem for BigInt<M>
impl<M: ManagedTypeApi> Rem for BigInt<M>
Source§impl<M: ManagedTypeApi> RemAssign<&BigInt<M>> for BigInt<M>
impl<M: ManagedTypeApi> RemAssign<&BigInt<M>> for BigInt<M>
Source§fn rem_assign(&mut self, other: &BigInt<M>)
fn rem_assign(&mut self, other: &BigInt<M>)
%= operation. Read moreSource§impl<M: ManagedTypeApi> RemAssign for BigInt<M>
impl<M: ManagedTypeApi> RemAssign for BigInt<M>
Source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%= operation. Read moreSource§impl<M: ManagedTypeApi> SCDisplay for BigInt<M>
impl<M: ManagedTypeApi> SCDisplay for BigInt<M>
fn fmt<F: FormatByteReceiver>(&self, f: &mut F)
Source§impl<M: ManagedTypeApi> Sub for BigInt<M>
impl<M: ManagedTypeApi> Sub for BigInt<M>
Source§impl<M: ManagedTypeApi> SubAssign<&BigInt<M>> for BigInt<M>
impl<M: ManagedTypeApi> SubAssign<&BigInt<M>> for BigInt<M>
Source§fn sub_assign(&mut self, other: &BigInt<M>)
fn sub_assign(&mut self, other: &BigInt<M>)
-= operation. Read moreSource§impl<M: ManagedTypeApi> SubAssign for BigInt<M>
impl<M: ManagedTypeApi> SubAssign for BigInt<M>
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-= operation. Read moreSource§impl<M: ManagedTypeApi> TopDecode for BigInt<M>
impl<M: ManagedTypeApi> TopDecode for BigInt<M>
Source§fn top_decode_or_handle_err<I, H>(input: I, h: H) -> Result<Self, H::HandledErr>where
I: TopDecodeInput,
H: DecodeErrorHandler,
fn top_decode_or_handle_err<I, H>(input: I, h: H) -> Result<Self, H::HandledErr>where
I: TopDecodeInput,
H: DecodeErrorHandler,
top_decode that can handle errors as soon as they occur.
For instance it can exit immediately and make sure that if it returns, it is a success.
By not deferring error handling, this can lead to somewhat smaller bytecode.Source§fn top_decode<I>(input: I) -> Result<Self, DecodeError>where
I: TopDecodeInput,
fn top_decode<I>(input: I) -> Result<Self, DecodeError>where
I: TopDecodeInput,
Source§impl<M: ManagedTypeApi> TopEncode for BigInt<M>
impl<M: ManagedTypeApi> TopEncode for BigInt<M>
Source§fn top_encode_or_handle_err<O, H>(
&self,
output: O,
h: H,
) -> Result<(), H::HandledErr>where
O: TopEncodeOutput,
H: EncodeErrorHandler,
fn top_encode_or_handle_err<O, H>(
&self,
output: O,
h: H,
) -> Result<(), H::HandledErr>where
O: TopEncodeOutput,
H: EncodeErrorHandler,
top_encode that can handle errors as soon as they occur.
For instance in can exit immediately and make sure that if it returns, it is a success.
By not deferring error handling, this can lead to somewhat smaller bytecode.Source§fn top_encode<O>(&self, output: O) -> Result<(), EncodeError>where
O: TopEncodeOutput,
fn top_encode<O>(&self, output: O) -> Result<(), EncodeError>where
O: TopEncodeOutput,
Source§impl<M: ManagedTypeApi> TryStaticCast for BigInt<M>
impl<M: ManagedTypeApi> TryStaticCast for BigInt<M>
fn type_eq<U>() -> boolwhere
U: TryStaticCast,
fn try_cast<U>(self) -> Option<U>where
U: TryStaticCast,
fn try_cast_ref<U>(&self) -> Option<&U>where
U: TryStaticCast,
Source§impl<M: ManagedTypeApi> TypeAbi for BigInt<M>
impl<M: ManagedTypeApi> TypeAbi for BigInt<M>
type Unmanaged = BigInt
Source§fn type_name_rust() -> TypeName
fn type_name_rust() -> TypeName
fn type_names() -> TypeNames
Source§fn type_name_specific() -> Option<TypeName>
fn type_name_specific() -> Option<TypeName>
Source§fn provide_type_descriptions<TDC: TypeDescriptionContainer>(
accumulator: &mut TDC,
)
fn provide_type_descriptions<TDC: TypeDescriptionContainer>( accumulator: &mut TDC, )
impl<M: ManagedTypeApi> Eq for BigInt<M>
impl<M> TypeAbiFrom<&BigInt<M>> for BigInt<M>where
M: ManagedTypeApi,
impl<M: ManagedTypeApi> TypeAbiFrom<&i16> for BigInt<M>
impl<M: ManagedTypeApi> TypeAbiFrom<&i32> for BigInt<M>
impl<M: ManagedTypeApi> TypeAbiFrom<&i64> for BigInt<M>
impl<M: ManagedTypeApi> TypeAbiFrom<&i8> for BigInt<M>
impl<M: ManagedTypeApi> TypeAbiFrom<&isize> for BigInt<M>
impl<M: ManagedTypeApi> TypeAbiFrom<BigInt<M>> for BigInt
num-bigint only.impl<M> TypeAbiFrom<BigInt<M>> for BigInt<M>where
M: ManagedTypeApi,
impl<M: ManagedTypeApi> TypeAbiFrom<BigInt> for BigInt<M>
num-bigint only.impl<M: ManagedTypeApi> TypeAbiFrom<i16> for BigInt<M>
impl<M: ManagedTypeApi> TypeAbiFrom<i32> for BigInt<M>
impl<M: ManagedTypeApi> TypeAbiFrom<i64> for BigInt<M>
impl<M: ManagedTypeApi> TypeAbiFrom<i8> for BigInt<M>
impl<M: ManagedTypeApi> TypeAbiFrom<isize> for BigInt<M>
Auto Trait Implementations§
impl<M> Freeze for BigInt<M>
impl<M> RefUnwindSafe for BigInt<M>
impl<M> Send for BigInt<M>
impl<M> Sync for BigInt<M>
impl<M> Unpin for BigInt<M>
impl<M> UnsafeUnpin for BigInt<M>
impl<M> UnwindSafe for BigInt<M>
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,
Source§impl<T> MultiValueConstLength for T
impl<T> MultiValueConstLength for T
Source§const MULTI_VALUE_CONST_LEN: usize = 1
const MULTI_VALUE_CONST_LEN: usize = 1
Source§impl<T> MultiValueLength for T
impl<T> MultiValueLength for T
Source§fn multi_value_len(&self) -> usize
fn multi_value_len(&self) -> usize
Source§impl<T> SCCodec for Twhere
T: TopEncode,
impl<T> SCCodec for Twhere
T: TopEncode,
fn fmt<F>(&self, f: &mut F)where
F: FormatByteReceiver,
Source§impl<T> TopDecodeMulti for Twhere
T: TopDecode,
impl<T> TopDecodeMulti for Twhere
T: TopDecode,
Source§const IS_SINGLE_VALUE: bool = true
const IS_SINGLE_VALUE: bool = true
fn multi_decode_or_handle_err<I, H>(
input: &mut I,
h: H,
) -> Result<T, <H as DecodeErrorHandler>::HandledErr>where
I: TopDecodeMultiInput,
H: DecodeErrorHandler,
fn multi_decode<I>(input: &mut I) -> Result<Self, DecodeError>where
I: TopDecodeMultiInput,
Source§impl<T> TopEncodeMulti for Twhere
T: TopEncode,
impl<T> TopEncodeMulti for Twhere
T: TopEncode,
Source§fn multi_encode_or_handle_err<O, H>(
&self,
output: &mut O,
h: H,
) -> Result<(), <H as EncodeErrorHandler>::HandledErr>where
O: TopEncodeMultiOutput,
H: EncodeErrorHandler,
fn multi_encode_or_handle_err<O, H>(
&self,
output: &mut O,
h: H,
) -> Result<(), <H as EncodeErrorHandler>::HandledErr>where
O: TopEncodeMultiOutput,
H: EncodeErrorHandler,
top_encode that can handle errors as soon as they occur.
For instance in can exit immediately and make sure that if it returns, it is a success.
By not deferring error handling, this can lead to somewhat smaller bytecode.