honeycomb_core::attributes

Struct AttrSparseVec

Source
pub struct AttrSparseVec<T: AttributeBind + AttributeUpdate> { /* private fields */ }
Expand description

Custom storage structure for attributes

This structured is used to store user-defined attributes using a vector of Option<T> items. This means that valid attributes value may be separated by an arbitrary number of None.

This implementation should favor access logic over locality of reference.

§Generics

  • T: AttributeBind + AttributeUpdate – Type of the stored attributes.

§Example

This type is not meant to be used directly but used along the AttributeBind trait.

Implementations§

Source§

impl<T: AttributeBind + AttributeUpdate> AttrSparseVec<T>

Source

pub fn allocated_size(&self) -> usize

Available on crate feature utils only.

Return the amount of space allocated for the storage.

Source

pub fn effective_size(&self) -> usize

Available on crate feature utils only.

Return the total amount of space used by the storage.

Source

pub fn used_size(&self) -> usize

Available on crate feature utils only.

Return the amount of space used by valid entries of the storage.

Trait Implementations§

Source§

impl<A: AttributeBind + AttributeUpdate> AttributeStorage<A> for AttrSparseVec<A>

Source§

fn force_write( &self, id: <A as AttributeBind>::IdentifierType, val: A, ) -> Option<A>

Write the value of an element at a given index and return the old value. Read more
Source§

fn write( &self, trans: &mut Transaction, id: <A as AttributeBind>::IdentifierType, val: A, ) -> StmResult<Option<A>>

Write the value of an element at a given index and return the old value. Read more
Source§

fn force_read(&self, id: <A as AttributeBind>::IdentifierType) -> Option<A>

Read the value of an element at a given index. Read more
Source§

fn read( &self, trans: &mut Transaction, id: <A as AttributeBind>::IdentifierType, ) -> StmResult<Option<A>>

Read the value of an element at a given index. Read more
Source§

fn force_remove(&self, id: <A as AttributeBind>::IdentifierType) -> Option<A>

Remove the value at a given index and return it. Read more
Source§

fn remove( &self, trans: &mut Transaction, id: <A as AttributeBind>::IdentifierType, ) -> StmResult<Option<A>>

Remove the value at a given index and return it. Read more
Source§

impl<T: Debug + AttributeBind + AttributeUpdate> Debug for AttrSparseVec<T>

Source§

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

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

impl<A: AttributeBind + AttributeUpdate> UnknownAttributeStorage for AttrSparseVec<A>

Source§

fn new(length: usize) -> Self
where Self: Sized,

Constructor Read more
Source§

fn extend(&mut self, length: usize)

Extend the storage’s length Read more
Source§

fn n_attributes(&self) -> usize

Return the number of stored attributes, i.e. the number of used slots in the storage, not its length.
Source§

fn merge( &self, trans: &mut Transaction, out: DartIdType, lhs_inp: DartIdType, rhs_inp: DartIdType, ) -> StmResult<()>

Merge attributes at specified index Read more
Source§

fn try_merge( &self, trans: &mut Transaction, out: DartIdType, lhs_inp: DartIdType, rhs_inp: DartIdType, ) -> CMapResult<()>

Merge attributes at specified index Read more
Source§

fn split( &self, trans: &mut Transaction, lhs_out: DartIdType, rhs_out: DartIdType, inp: DartIdType, ) -> StmResult<()>

Split attribute to specified indices Read more
Source§

fn try_split( &self, trans: &mut Transaction, lhs_out: DartIdType, rhs_out: DartIdType, inp: DartIdType, ) -> CMapResult<()>

Split attribute to specified indices Read more
Source§

fn force_merge(&self, out: DartIdType, lhs_inp: DartIdType, rhs_inp: DartIdType)

Merge attributes at specified index Read more
Source§

fn force_split(&self, lhs_out: DartIdType, rhs_out: DartIdType, inp: DartIdType)

Split attribute to specified indices Read more
Source§

impl<A: AttributeBind + AttributeUpdate> Send for AttrSparseVec<A>

Source§

impl<A: AttributeBind + AttributeUpdate> Sync for AttrSparseVec<A>

Auto Trait Implementations§

§

impl<T> Freeze for AttrSparseVec<T>

§

impl<T> !RefUnwindSafe for AttrSparseVec<T>

§

impl<T> Unpin for AttrSparseVec<T>
where T: Unpin,

§

impl<T> !UnwindSafe for AttrSparseVec<T>

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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.