pub struct Page<const SIZE: u32>(/* private fields */);
Expand description
Struct represents memory page number with some constant size SIZE
in bytes.
SIZE
type is u32, so page size < 4GiB (wasm32 memory size limit).SIZE
must be power of two and must not be equal to zero bytes.SIZE == 1
is possible, but then you cannot use PagesAmount for these pages.
Implementations§
Source§impl<const SIZE: u32> Page<SIZE>
impl<const SIZE: u32> Page<SIZE>
Sourcepub const SIZE: u32 = SIZE
pub const SIZE: u32 = SIZE
Page size. May be any number power of two in interval [1, u32::MAX].
Sourcepub const UPPER: Self = _
pub const UPPER: Self = _
Max possible page number in 4GB memory.
Note: const computation contains checking in order to prevent incorrect SIZE.
Sourcepub fn inc(&self) -> PagesAmount<SIZE>
pub fn inc(&self) -> PagesAmount<SIZE>
Increment page number. Returns PagesAmount<SIZE>
, because this allows to avoid overflows.
Sourcepub fn from_offset(offset: u32) -> Self
pub fn from_offset(offset: u32) -> Self
Constructs new page from byte offset: returns page which contains this byte.
Sourcepub fn end_offset(&self) -> u32
pub fn end_offset(&self) -> u32
Returns page last byte offset.
Sourcepub fn to_page<const S1: u32>(self) -> Page<S1>
pub fn to_page<const S1: u32>(self) -> Page<S1>
Returns new page, which contains self
zero byte.
Sourcepub fn to_iter<const S1: u32>(self) -> IntervalIterator<Page<S1>>
pub fn to_iter<const S1: u32>(self) -> IntervalIterator<Page<S1>>
Returns an iterator that iterates over the range of pages from self
to the end page,
inclusive. Each iteration yields a page of type Page<S1>
.
§Example
use gear_core::pages::{GearPage, WasmPage};
let x: Vec<GearPage> = WasmPage::from(5).to_iter().collect();
println!("{x:?}");
For this example must be printed: [GearPage(20), GearPage(21), GearPage(22), GearPage(23)]
Trait Implementations§
Source§impl<const SIZE: u32> Decode for Page<SIZE>
impl<const SIZE: u32> Decode for Page<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> Encode for Page<SIZE>
impl<const SIZE: u32> Encode for Page<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> LowerBounded for Page<SIZE>
impl<const SIZE: u32> LowerBounded for Page<SIZE>
Source§impl<const SIZE: u32> Numerated for Page<SIZE>
impl<const SIZE: u32> Numerated for Page<SIZE>
Source§type Distance = u32
type Distance = u32
Numerate type: type that describes the distances between two values of
Self
.Source§type Bound = PagesAmount<SIZE>
type Bound = PagesAmount<SIZE>
Bound type: type for which any value can be mapped to
Self
,
and also has upper value, which is bigger than any value of Self
.Source§fn add_if_enclosed_by(self, num: Self::Distance, other: Self) -> Option<Self>
fn add_if_enclosed_by(self, num: Self::Distance, other: Self) -> Option<Self>
Source§fn sub_if_enclosed_by(self, num: Self::Distance, other: Self) -> Option<Self>
fn sub_if_enclosed_by(self, num: Self::Distance, other: Self) -> Option<Self>
Source§fn enclosed_by(self, a: &Self, b: &Self) -> bool
fn enclosed_by(self, a: &Self, b: &Self) -> bool
Returns
true
, if self
is enclosed by a
and b
.Source§impl<const SIZE: u32> Ord for Page<SIZE>
impl<const SIZE: u32> Ord for Page<SIZE>
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> 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 Page<SIZE>
impl<const SIZE: u32> PartialOrd for Page<SIZE>
Source§impl<const SIZE: u32> UpperBounded for Page<SIZE>
impl<const SIZE: u32> UpperBounded for Page<SIZE>
impl<const SIZE: u32> Copy for Page<SIZE>
impl<const SIZE: u32> EncodeLike for Page<SIZE>
impl<const SIZE: u32> Eq for Page<SIZE>
impl<const SIZE: u32> StructuralPartialEq for Page<SIZE>
Auto Trait Implementations§
impl<const SIZE: u32> Freeze for Page<SIZE>
impl<const SIZE: u32> RefUnwindSafe for Page<SIZE>
impl<const SIZE: u32> Send for Page<SIZE>
impl<const SIZE: u32> Sync for Page<SIZE>
impl<const SIZE: u32> Unpin for Page<SIZE>
impl<const SIZE: u32> UnwindSafe for Page<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