Skip to main content

Segment

Struct Segment 

Source
#[repr(C)]
pub struct Segment { pub offset: u32, pub size: u32, }
Expand description

Compile-time descriptor of a typed byte range inside an account.

Fields are u32 because every Solana account is bounded by u32::MAX in practice and we want the whole primitive to fit in a single 64-bit register.

Fields§

§offset: u32

Absolute byte offset from the start of account data (includes the 16-byte Hopper header). This is what the access primitives want, so storing it absolute avoids a runtime addition.

§size: u32

Byte size of the segment.

Implementations§

Source§

impl Segment

Source

pub const fn new(offset: u32, size: u32) -> Self

Construct a segment from an absolute offset (measured from the start of account data, including the Hopper header).

Source

pub const fn body(body_offset: u32, size: u32) -> Self

Construct a segment from a body-relative offset (offset measured past the 16-byte Hopper header). This is the form that macros most often emit: #[hopper::state] computes field offsets relative to the struct body, and body-relative is what SegmentMap::SEGMENTS stores.

Source

pub const fn end(&self) -> u32

One-past-the-end byte offset.

Source

pub const fn overlaps(&self, other: &Segment) -> bool

Whether two segments share any byte.

Source

pub const fn contained_in(&self, container: &Segment) -> bool

Whether this segment is contained fully within container.

Trait Implementations§

Source§

impl Clone for Segment

Source§

fn clone(&self) -> Segment

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Segment

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for Segment

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Segment

Source§

fn eq(&self, other: &Segment) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Segment

Source§

impl Eq for Segment

Source§

impl StructuralPartialEq for Segment

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.