pub struct PagesAmount<const SIZE: u32>(/* private fields */);Expand description
Struct represents memory pages amount with some constant size SIZE in bytes.
SIZEtype is u32, so page size < 4GiB (wasm32 memory size limit).SIZEmust be power of two and must not be equal to one or zero bytes.
Implementations§
Source§impl<const SIZE: u32> PagesAmount<SIZE>
impl<const SIZE: u32> PagesAmount<SIZE>
Sourcepub const SIZE: u32 = SIZE
pub const SIZE: u32 = SIZE
Page size. May be any number power of two in interval [2, u32::MAX].
NOTE: In case SIZE == 0 or 1 or any not power of two number, then you would receive compilation error.
Sourcepub const UPPER: Self
pub const UPPER: Self
Number of max pages amount. Equal to max page number + 1.
NOTE: const computation contains checking in order to prevent incorrect SIZE.
Sourcepub fn to_page_number(&self) -> Option<Page<SIZE>>
pub fn to_page_number(&self) -> Option<Page<SIZE>>
Get page number, which bounds this pages amount. If pages amount == 4GB size, then returns None, because such page number does not exist.
Sourcepub fn to_pages_amount<const S: u32>(&self) -> PagesAmount<S>
pub fn to_pages_amount<const S: u32>(&self) -> PagesAmount<S>
Returns corresponding amount of pages with another size S.
Trait Implementations§
Source§impl<const SIZE: u32> Clone for PagesAmount<SIZE>
impl<const SIZE: u32> Clone for PagesAmount<SIZE>
Source§fn clone(&self) -> PagesAmount<SIZE>
fn clone(&self) -> PagesAmount<SIZE>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<const SIZE: u32> Debug for PagesAmount<SIZE>
impl<const SIZE: u32> Debug for PagesAmount<SIZE>
Source§impl<const SIZE: u32> Decode for PagesAmount<SIZE>
impl<const SIZE: u32> Decode for PagesAmount<SIZE>
Source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy,
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy, ) -> Result<Self, Error>
Attempt to deserialise the value from input.
Source§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
Source§impl<const SIZE: u32> DecodeAsFields for PagesAmount<SIZE>
impl<const SIZE: u32> DecodeAsFields for PagesAmount<SIZE>
Source§fn decode_as_fields<'info, R: TypeResolver>(
input: &mut &[u8],
fields: &mut dyn FieldIter<'info, R::TypeId>,
types: &'info R,
) -> Result<Self, Error>
fn decode_as_fields<'info, R: TypeResolver>( input: &mut &[u8], fields: &mut dyn FieldIter<'info, R::TypeId>, types: &'info R, ) -> Result<Self, Error>
Given some bytes and some fields denoting their structure, attempt to decode.
Source§impl<const SIZE: u32> Default for PagesAmount<SIZE>
impl<const SIZE: u32> Default for PagesAmount<SIZE>
Source§fn default() -> PagesAmount<SIZE>
fn default() -> PagesAmount<SIZE>
Returns the “default value” for a type. Read more
Source§impl<const SIZE: u32> Encode for PagesAmount<SIZE>
impl<const SIZE: u32> Encode for PagesAmount<SIZE>
Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
If possible give a hint of expected size of the encoding. Read more
Source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy, )
Convert self to a slice and append it to the destination.
Source§fn using_encoded<__CodecOutputReturn, __CodecUsingEncodedCallback: FnOnce(&[u8]) -> __CodecOutputReturn>(
&self,
f: __CodecUsingEncodedCallback,
) -> __CodecOutputReturn
fn using_encoded<__CodecOutputReturn, __CodecUsingEncodedCallback: FnOnce(&[u8]) -> __CodecOutputReturn>( &self, f: __CodecUsingEncodedCallback, ) -> __CodecOutputReturn
Convert self to a slice and then invoke the given closure with it.
Source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
Source§impl<const SIZE: u32> EncodeAsFields for PagesAmount<SIZE>
impl<const SIZE: u32> EncodeAsFields for PagesAmount<SIZE>
Source§fn encode_as_fields_to<ScaleEncodeResolver: TypeResolver>(
&self,
__encode_as_type_fields: &mut dyn FieldIter<'_, ScaleEncodeResolver::TypeId>,
__encode_as_type_types: &ScaleEncodeResolver,
__encode_as_type_out: &mut Vec<u8>,
) -> Result<(), Error>
fn encode_as_fields_to<ScaleEncodeResolver: TypeResolver>( &self, __encode_as_type_fields: &mut dyn FieldIter<'_, ScaleEncodeResolver::TypeId>, __encode_as_type_types: &ScaleEncodeResolver, __encode_as_type_out: &mut Vec<u8>, ) -> Result<(), Error>
Given some fields describing the shape of a type, attempt to encode to that shape.
Source§fn encode_as_fields<R>(
&self,
fields: &mut dyn FieldIter<'_, <R as TypeResolver>::TypeId, Item = Field<'_, <R as TypeResolver>::TypeId>>,
types: &R,
) -> Result<Vec<u8>, Error>where
R: TypeResolver,
fn encode_as_fields<R>(
&self,
fields: &mut dyn FieldIter<'_, <R as TypeResolver>::TypeId, Item = Field<'_, <R as TypeResolver>::TypeId>>,
types: &R,
) -> Result<Vec<u8>, Error>where
R: TypeResolver,
This is a helper function which internally calls
EncodeAsFields::encode_as_fields_to. Prefer to
implement that instead.Source§impl<const SIZE: u32> EncodeAsType for PagesAmount<SIZE>
impl<const SIZE: u32> EncodeAsType for PagesAmount<SIZE>
Source§fn encode_as_type_to<ScaleEncodeResolver: TypeResolver>(
&self,
__encode_as_type_type_id: ScaleEncodeResolver::TypeId,
__encode_as_type_types: &ScaleEncodeResolver,
__encode_as_type_out: &mut Vec<u8>,
) -> Result<(), Error>
fn encode_as_type_to<ScaleEncodeResolver: TypeResolver>( &self, __encode_as_type_type_id: ScaleEncodeResolver::TypeId, __encode_as_type_types: &ScaleEncodeResolver, __encode_as_type_out: &mut Vec<u8>, ) -> Result<(), Error>
Given some
type_id, types, a context and some output target for the SCALE encoded bytes,
attempt to SCALE encode the current value into the type given by type_id.Source§fn encode_as_type<R>(
&self,
type_id: <R as TypeResolver>::TypeId,
types: &R,
) -> Result<Vec<u8>, Error>where
R: TypeResolver,
fn encode_as_type<R>(
&self,
type_id: <R as TypeResolver>::TypeId,
types: &R,
) -> Result<Vec<u8>, Error>where
R: TypeResolver,
This is a helper function which internally calls
EncodeAsType::encode_as_type_to. Prefer to
implement that instead.Source§impl<const SIZE: u32> From<PagesAmount<SIZE>> for u32
impl<const SIZE: u32> From<PagesAmount<SIZE>> for u32
Source§fn from(value: PagesAmount<SIZE>) -> Self
fn from(value: PagesAmount<SIZE>) -> Self
Converts to this type from the input type.
Source§impl<const SIZE: u32> Hash for PagesAmount<SIZE>
impl<const SIZE: u32> Hash for PagesAmount<SIZE>
Source§impl<const SIZE: u32> IntoVisitor for PagesAmount<SIZE>
impl<const SIZE: u32> IntoVisitor for PagesAmount<SIZE>
Source§type AnyVisitor<ScaleDecodeTypeResolver: TypeResolver> = Visitor<SIZE, ScaleDecodeTypeResolver>
type AnyVisitor<ScaleDecodeTypeResolver: TypeResolver> = Visitor<SIZE, ScaleDecodeTypeResolver>
The visitor type used to decode SCALE encoded bytes to
Self.Source§fn into_visitor<ScaleDecodeTypeResolver: TypeResolver>() -> Self::AnyVisitor<ScaleDecodeTypeResolver>
fn into_visitor<ScaleDecodeTypeResolver: TypeResolver>() -> Self::AnyVisitor<ScaleDecodeTypeResolver>
A means of obtaining this visitor.
Source§impl<const SIZE: u32> Ord for PagesAmount<SIZE>
impl<const SIZE: u32> Ord for PagesAmount<SIZE>
Source§fn cmp(&self, other: &PagesAmount<SIZE>) -> Ordering
fn cmp(&self, other: &PagesAmount<SIZE>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl<const SIZE: u32> PartialEq for PagesAmount<SIZE>
impl<const SIZE: u32> PartialEq for PagesAmount<SIZE>
Source§impl<const SIZE: u32> PartialOrd<Page<SIZE>> for PagesAmount<SIZE>
impl<const SIZE: u32> PartialOrd<Page<SIZE>> for PagesAmount<SIZE>
Source§impl<const SIZE: u32> PartialOrd<PagesAmount<SIZE>> for Page<SIZE>
impl<const SIZE: u32> PartialOrd<PagesAmount<SIZE>> for Page<SIZE>
Source§impl<const SIZE: u32> PartialOrd for PagesAmount<SIZE>
impl<const SIZE: u32> PartialOrd for PagesAmount<SIZE>
Source§impl<const SIZE: u32> TypeInfo for PagesAmount<SIZE>
impl<const SIZE: u32> TypeInfo for PagesAmount<SIZE>
impl<const SIZE: u32> Copy for PagesAmount<SIZE>
impl<const SIZE: u32> EncodeLike for PagesAmount<SIZE>
impl<const SIZE: u32> Eq for PagesAmount<SIZE>
impl<const SIZE: u32> StructuralPartialEq for PagesAmount<SIZE>
Auto Trait Implementations§
impl<const SIZE: u32> Freeze for PagesAmount<SIZE>
impl<const SIZE: u32> RefUnwindSafe for PagesAmount<SIZE>
impl<const SIZE: u32> Send for PagesAmount<SIZE>
impl<const SIZE: u32> Sync for PagesAmount<SIZE>
impl<const SIZE: u32> Unpin for PagesAmount<SIZE>
impl<const SIZE: u32> UnwindSafe for PagesAmount<SIZE>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DecodeAsType for Twhere
T: IntoVisitor,
impl<T> DecodeAsType for Twhere
T: IntoVisitor,
fn decode_as_type_maybe_compact<R>(
input: &mut &[u8],
type_id: <R as TypeResolver>::TypeId,
types: &R,
is_compact: bool,
) -> Result<T, Error>where
R: TypeResolver,
Source§fn decode_as_type<R>(
input: &mut &[u8],
type_id: <R as TypeResolver>::TypeId,
types: &R,
) -> Result<Self, Error>where
R: TypeResolver,
fn decode_as_type<R>(
input: &mut &[u8],
type_id: <R as TypeResolver>::TypeId,
types: &R,
) -> Result<Self, Error>where
R: TypeResolver,
Given some input bytes, a
type_id, and type registry, attempt to decode said bytes into
Self. Implementations should modify the &mut reference to the bytes such that any bytes
not used in the course of decoding are still pointed to after decoding is complete.