Skip to main content

StableBTreeMap

Struct StableBTreeMap 

Source
pub struct StableBTreeMap<K: Storable + Ord + Clone, V: Storable, M: Memory = DefaultMemoryImpl> { /* private fields */ }
Expand description

Governed upstream BTreeMap; initialization and failures follow upstream contracts.

Implementations§

Source§

impl<K: Storable + Ord + Clone, V: Storable, M: Memory> StableBTreeMap<K, V, M>

Source

pub fn new(memory: RuntimeMemory<M>) -> Self

Delegates to upstream BTreeMap::new with the governed allocation.

Source

pub fn init(memory: RuntimeMemory<M>) -> Self

Delegates to upstream BTreeMap::init with the governed allocation.

Source

pub fn load(memory: RuntimeMemory<M>) -> Self

Delegates to upstream BTreeMap::load with the governed allocation.

Source

pub fn clear(&mut self)

Clear entries while retaining this allocation’s exclusive lease.

Source

pub fn reserve_pages(self, minimum: u64) -> (Self, Result<(), RuntimeGrowError>)

Reserve a minimum virtual extent without exposing or duplicating the lease.

Returns the map on both success and ordinary growth refusal. Entries are preserved; reloading the upstream header refreshes its cached allocator. Backing traps retain the upstream panic contract.

minimum is an absolute virtual extent in 65,536-byte Wasm pages, not an entry count or additional pages. Existing extents never shrink. A request already covered performs no growth or writes. This reserves backing only: it does not promise that any particular number or encoding of entries fits. Callers own their byte/page budget and must qualify it for their codecs; upstream node-layout constants are not a supported capacity contract.

Source

pub fn allocated_pages(self) -> (Self, u64)

Observe the virtual extent in 65,536-byte pages while retaining the lease.

Consumes and returns the map because upstream exposes memory only through ownership transfer. Reloading reads the header without writing or growing. This is allocated extent, not free space or guaranteed entry capacity.

Source

pub fn insert(&mut self, key: K, value: V) -> Option<V>

Delegates to upstream BTreeMap::insert with the governed allocation.

Source

pub fn get(&self, key: &K) -> Option<V>

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

Source

pub fn contains_key(&self, key: &K) -> bool

Delegates to upstream BTreeMap::contains_key with the governed allocation.

Source

pub fn is_empty(&self) -> bool

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

Source

pub fn len(&self) -> u64

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

Source

pub fn remove(&mut self, key: &K) -> Option<V>

Delegates to upstream BTreeMap::remove with the governed allocation.

Source

pub fn first_key_value(&self) -> Option<(K, V)>

Delegates to upstream BTreeMap::first_key_value with the governed allocation.

Source

pub fn last_key_value(&self) -> Option<(K, V)>

Delegates to upstream BTreeMap::last_key_value with the governed allocation.

Source

pub fn pop_first(&mut self) -> Option<(K, V)>

Delegates to upstream BTreeMap::pop_first with the governed allocation.

Source

pub fn pop_last(&mut self) -> Option<(K, V)>

Delegates to upstream BTreeMap::pop_last with the governed allocation.

Source

pub fn iter(&self) -> MapIter<'_, K, V, M>

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

Source

pub fn range(&self, key_range: impl RangeBounds<K>) -> MapIter<'_, K, V, M>

Delegates to upstream BTreeMap::range with the governed allocation.

Source

pub fn keys(&self) -> impl DoubleEndedIterator<Item = K> + '_

Delegates to upstream BTreeMap::keys with the governed allocation.

Source

pub fn values(&self) -> impl DoubleEndedIterator<Item = V> + '_

Delegates to upstream BTreeMap::values with the governed allocation.

Trait Implementations§

Source§

impl<'a, K: Storable + Ord + Clone, V: Storable, M: Memory> IntoIterator for &'a StableBTreeMap<K, V, M>

Source§

type Item = <Iter<'a, K, V, RuntimeMemory<M>> as Iterator>::Item

The type of the elements being iterated over.
Source§

type IntoIter = Iter<'a, K, V, 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<K, V, M = Rc<RefCell<Vec<u8>>>> !Freeze for StableBTreeMap<K, V, M>

§

impl<K, V, M = Rc<RefCell<Vec<u8>>>> !RefUnwindSafe for StableBTreeMap<K, V, M>

§

impl<K, V, M = Rc<RefCell<Vec<u8>>>> !Send for StableBTreeMap<K, V, M>

§

impl<K, V, M = Rc<RefCell<Vec<u8>>>> !Sync for StableBTreeMap<K, V, M>

§

impl<K, V, M = Rc<RefCell<Vec<u8>>>> !UnwindSafe for StableBTreeMap<K, V, M>

§

impl<K, V, M> Unpin for StableBTreeMap<K, V, M>
where BTreeMap<K, V, RuntimeMemory<M>>: Unpin,

§

impl<K, V, M> UnsafeUnpin for StableBTreeMap<K, V, 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.