[][src]Struct memory_manager::block::BlockDescriptor

pub struct BlockDescriptor<'a> {
    pub start: *mut u8,
    pub free: *mut u8,
    // some fields omitted
}

Memory block: collection of objects.

Block Layout

┏━━━━━━━━━━┯━━━━━━━━━━┯━━━━━┯━━━━━━━━━━┯━━━━━━━━━━━━━━┓
┃ reserved │ object 0 │ ... │ object N │ not used yet ┃
┗━━━━━━━━━━┷━━━━━━━━━━┷━━━━━┷━━━━━━━━━━┷━━━━━━━━━━━━━━┛
           ↑                           ↑
           │                           │
         start                        free

Fields

start: *mut u8

The starting address for this block.

Invariant: unless start == free, at start there is a valid ObjectDescriptor.

free: *mut u8

The first free address in this block.

Invariant: no pointers in the same block is after free.

Implementations

impl<'a> BlockDescriptor<'a>[src]

pub const SIZE: usize[src]

Size of a Block.

pub const SIZE_IN_WORDS: usize[src]

Size of a Block in Words (usizes).

pub fn new(start: *mut u8) -> Self[src]

Constructor for BlockDescriptor.

pub fn objects(&self) -> ObjectIterator<'a>[src]

Iterate on the objects in this block.

Trait Implementations

impl<'a> Clone for BlockDescriptor<'a>[src]

impl<'a> Copy for BlockDescriptor<'a>[src]

Auto Trait Implementations

impl<'a> !Send for BlockDescriptor<'a>

impl<'a> !Sync for BlockDescriptor<'a>

impl<'a> Unpin for BlockDescriptor<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.