Skip to main content

StableLog

Struct StableLog 

Source
pub struct StableLog<T: Storable, M: Memory = DefaultMemoryImpl> { /* private fields */ }
Expand description

Governed upstream Log; initialization and failures follow upstream contracts.

Implementations§

Source§

impl<T: Storable, M: Memory> StableLog<T, M>

Source

pub fn new( index_memory: RuntimeMemory<M>, data_memory: RuntimeMemory<M>, ) -> Self

Create a new collection, replacing any prior collection in the selected memory. This is destructive even when a valid collection already exists.

§Panics

Panics on insufficient memory or codec/backing failure.

Source

pub fn init( index_memory: RuntimeMemory<M>, data_memory: RuntimeMemory<M>, ) -> Self

Open a retained log, or initialize both memories when data memory is empty or has foreign magic. The latter overwrites previous contents.

§Panics

With recognized data magic, panics for an invalid index or unsupported layout. Growth and codec/backing failures also retain upstream panics.

Source

pub fn first(&self) -> Option<T>

Delegates to upstream Log::first with the governed allocation.

Source

pub fn last(&self) -> Option<T>

Delegates to upstream Log::last with the governed allocation.

Source

pub fn get(&self, idx: u64) -> Option<T>

Delegates to upstream Log::get with the governed allocation.

Source

pub fn len(&self) -> u64

Delegates to upstream Log::len with the governed allocation.

Source

pub fn is_empty(&self) -> bool

Delegates to upstream Log::is_empty with the governed allocation.

Source

pub fn append(&self, item: &T) -> Result<u64, LogWriteError>

Delegates to upstream Log::append with the governed allocation.

§Errors

Returns the upstream write error if memory cannot grow.

Source

pub fn iter(&self) -> LogIter<'_, T, M>

Delegates to upstream Log::iter with the governed allocation.

Trait Implementations§

Source§

impl<'a, T: Storable, M: Memory> IntoIterator for &'a StableLog<T, M>

Source§

type Item = T

The type of the elements being iterated over.
Source§

type IntoIter = Iter<'a, T, RuntimeMemory<M>, RuntimeMemory<M>>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more

Auto Trait Implementations§

§

impl<T, M = Rc<RefCell<Vec<u8>>>> !Freeze for StableLog<T, M>

§

impl<T, M = Rc<RefCell<Vec<u8>>>> !RefUnwindSafe for StableLog<T, M>

§

impl<T, M = Rc<RefCell<Vec<u8>>>> !Send for StableLog<T, M>

§

impl<T, M = Rc<RefCell<Vec<u8>>>> !Sync for StableLog<T, M>

§

impl<T, M = Rc<RefCell<Vec<u8>>>> !UnwindSafe for StableLog<T, M>

§

impl<T, M> Unpin for StableLog<T, M>

§

impl<T, M> UnsafeUnpin for StableLog<T, M>

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.