MemoryLayout

Struct MemoryLayout 

Source
pub struct MemoryLayout { /* private fields */ }
Expand description

Memory layout representation: alignment and size aligned for this alignment

This API has been marked as unstable: it works as advertised, but it may be changed in a future release.

Implementations§

Source§

impl MemoryLayout

Source

pub fn new<T>(size: T, alignment: AllocAlignment) -> Result<Self, ZLayoutError>

Try to create a new memory layout.

This API has been marked as unstable: it works as advertised, but it may be changed in a future release.
§Errors

This function will return an error if zero size have passed or if the provided size is not the multiply of the alignment.

Source

pub const fn for_type<T: Sized>() -> Self

Creates a new MemoryLayout for type.

This API has been marked as unstable: it works as advertised, but it may be changed in a future release.
Source

pub const fn for_value<T: Sized>(_: &T) -> Self

Creates a new MemoryLayout for value type.

This API has been marked as unstable: it works as advertised, but it may be changed in a future release.
Source

pub fn size(&self) -> NonZeroUsize

Source

pub fn alignment(&self) -> AllocAlignment

Source

pub fn extend( &self, new_alignment: AllocAlignment, ) -> Result<MemoryLayout, ZLayoutError>

Realign the layout for new alignment. The alignment must be >= of the existing one.

This API has been marked as unstable: it works as advertised, but it may be changed in a future release.
# Examples
use zenoh_shm::api::provider::types::AllocAlignment;
use zenoh_shm::api::provider::memory_layout::MemoryLayout;

// 8 bytes with 4-byte alignment
let layout4b = MemoryLayout::new(8, AllocAlignment::new(2).unwrap()).unwrap();

// Try to realign with 2-byte alignment
let layout2b = layout4b.extend(AllocAlignment::new(1).unwrap());
assert!(layout2b.is_err()); // fails because new alignment must be >= old

// Try to realign with 8-byte alignment
let layout8b = layout4b.extend(AllocAlignment::new(3).unwrap());
assert!(layout8b.is_ok()); // ok

Trait Implementations§

Source§

impl Clone for MemoryLayout

Source§

fn clone(&self) -> MemoryLayout

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 MemoryLayout

Source§

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

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

impl Display for MemoryLayout

Source§

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

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

impl From<&MemoryLayout> for MemoryLayout

Source§

fn from(other: &MemoryLayout) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for MemoryLayout

Source§

fn eq(&self, other: &MemoryLayout) -> 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 TryFrom<(NonZero<usize>, AllocAlignment)> for MemoryLayout

Source§

type Error = ZLayoutError

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

fn try_from(value: (NonZeroUsize, AllocAlignment)) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<(usize, AllocAlignment)> for MemoryLayout

Source§

type Error = ZLayoutError

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

fn try_from(value: (usize, AllocAlignment)) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<NonZero<usize>> for MemoryLayout

Source§

type Error = ZLayoutError

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

fn try_from(value: NonZeroUsize) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<usize> for MemoryLayout

Source§

type Error = ZLayoutError

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

fn try_from(value: usize) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl Copy for MemoryLayout

Source§

impl Eq for MemoryLayout

Source§

impl StructuralPartialEq for MemoryLayout

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<Source> AccessAs for Source

Source§

fn ref_as<T>(&self) -> <Source as IGuardRef<T>>::Guard<'_>
where Source: IGuardRef<T>, T: ?Sized,

Provides immutable access to a type as if it were its ABI-unstable equivalent.
Source§

fn mut_as<T>(&mut self) -> <Source as IGuardMut<T>>::GuardMut<'_>
where Source: IGuardMut<T>, T: ?Sized,

Provides mutable access to a type as if it were its ABI-unstable equivalent.
Source§

impl<T> AllocLayout for T

Source§

type Buffer = ZShmMut

The buffer returned by the allocation.
Source§

fn memory_layout(self) -> Result<MemoryLayout, ZLayoutError>

Returns the memory layouts of the allocation.
Source§

unsafe fn wrap_buffer(buffer: ZShmMut) -> <T as AllocLayout>::Buffer

Wraps the raw allocated buffer. Read more
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, As> IGuardMut<As> for T
where T: Into<As>, As: Into<T>,

Source§

type GuardMut<'a> = MutAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary after applying its changes to the original.
Source§

fn guard_mut_inner(&mut self) -> <T as IGuardMut<As>>::GuardMut<'_>

Construct the temporary and guard it through a mutable reference.
Source§

impl<T, As> IGuardRef<As> for T
where T: Into<As>, As: Into<T>,

Source§

type Guard<'a> = RefAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary.
Source§

fn guard_ref_inner(&self) -> <T as IGuardRef<As>>::Guard<'_>

Construct the temporary and guard it through an immutable reference.
Source§

impl<T> Includes<End> for T

Source§

type Output = End

The result
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyValue<T> for T
where T: Copy,

Source§

fn get(&self) -> T

Source§

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

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more