pub struct OrdAllocator<K, T, O>{
pub id_map: IdMap<K, T>,
pub collex: FieldCollex<Pair<K, O>, T>,
}Fields§
§id_map: IdMap<K, T>§collex: FieldCollex<Pair<K, O>, T>Implementations§
Source§impl<K, V, E> OrdAllocator<K, V, E>
impl<K, V, E> OrdAllocator<K, V, E>
pub fn new(span: Span<V>, unit: V) -> Result<Self, NewFieldCollexError<V>>
pub fn with_capacity( span: Span<V>, unit: V, capacity: usize, ) -> Result<Self, WithCapacityFieldCollexError<V>>
pub fn with_elements( span: Span<V>, unit: V, vec: Vec<E>, ) -> Result<Self, WithElementsFieldCollexError<V>>
pub fn extend(&mut self, vec: Vec<E>)
pub fn try_extend(&mut self, vec: Vec<E>) -> TryExtendResult<Pair<K, E>>
pub fn insert(&mut self, elem: E) -> Result<K, InsertFieldCollexError<E>>
pub fn remove(&mut self, id: K) -> Option<E>
pub fn modify<F, R>( &mut self, id: K, f: F, ) -> Result<R, ModifyFieldCollexError<(R, E)>>
pub fn try_modify<F, R>( &mut self, id: K, f: F, ) -> Result<R, ModifyFieldCollexError<R>>
pub fn get_with_id(&self, id: K) -> Option<&E>
pub fn into_raw_parts(self) -> (IdMap<K, V>, FieldCollex<Pair<K, E>, V>)
pub fn from_raw_parts( id_map: IdMap<K, V>, collex: FieldCollex<Pair<K, E>, V>, ) -> Self
Methods from Deref<Target = FieldCollex<Pair<K, E>, V>>§
pub fn span(&self) -> &Span<V>
pub fn unit(&self) -> &V
Sourcepub fn capacity(&self) -> usize
pub fn capacity(&self) -> usize
Returns the total number of elements the inner vector can hold without reallocating.
此值应小于等于最大块数量
Sourcepub fn contains_value(&self, value: V) -> bool
pub fn contains_value(&self, value: V) -> bool
查找对应值是否存在
Sourcepub fn try_extend(&mut self, vec: Vec<E>) -> TryExtendResult<E>
pub fn try_extend(&mut self, vec: Vec<E>) -> TryExtendResult<E>
批量插入元素,返回插入的情况。
Sourcepub fn insert(&mut self, value: E) -> Result<(), InsertFieldCollexError<E>>
pub fn insert(&mut self, value: E) -> Result<(), InsertFieldCollexError<E>>
插入值
Sourcepub fn remove(&mut self, target: V) -> Result<E, RemoveFieldCollexError>
pub fn remove(&mut self, target: V) -> Result<E, RemoveFieldCollexError>
删除对应值
pub fn find_gt(&self, target: V) -> Option<&E>
pub fn find_ge(&self, target: V) -> Option<&E>
pub fn find_lt(&self, target: V) -> Option<&E>
pub fn find_le(&self, target: V) -> Option<&E>
Sourcepub fn find_closest(&self, target: V) -> Option<&E>
pub fn find_closest(&self, target: V) -> Option<&E>
找到最近的
两边距离相等时返回更小的
pub fn get(&self, value: V) -> Option<&E>
Sourcepub fn unchecked_get(&self, value: V) -> &E
pub fn unchecked_get(&self, value: V) -> &E
§Panics
找不到panic
Sourcepub fn try_modify<F, R>(
&mut self,
value: V,
op: F,
) -> Result<R, ModifyFieldCollexError<R>>
pub fn try_modify<F, R>( &mut self, value: V, op: F, ) -> Result<R, ModifyFieldCollexError<R>>
闭包结束后,会根据Value是否发生变化来决定是否更新其在Collex中的位置
若更新后的值(仅指collexate值)无法容纳于本Collex,将报错并重置值。
Sourcepub fn modify<F, R>(
&mut self,
value: V,
op: F,
) -> Result<R, ModifyFieldCollexError<(R, E)>>
pub fn modify<F, R>( &mut self, value: V, op: F, ) -> Result<R, ModifyFieldCollexError<(R, E)>>
闭包结束后,会根据Value是否发生变化来决定是否更新其在Collex中的位置
若更新后的值(仅指collexate值)无法容纳于本Collex,将直接通过错误类型的变体返还
Sourcepub fn unchecked_modify<F, R>(&mut self, value: V, op: F) -> R
pub fn unchecked_modify<F, R>(&mut self, value: V, op: F) -> R
闭包结束后,会根据Value是否发生变化来决定是否更新其在Collex中的位置
§Panics
若无法找到对应的元素,panic
若更新后的值(仅指collexate值)无法容纳于本Collex,将直接Panic
Trait Implementations§
Source§impl<K, T, O> Debug for OrdAllocator<K, T, O>
impl<K, T, O> Debug for OrdAllocator<K, T, O>
Source§impl<K, V, E> Deref for OrdAllocator<K, V, E>
impl<K, V, E> Deref for OrdAllocator<K, V, E>
Source§impl<K, V, E> DerefMut for OrdAllocator<K, V, E>
impl<K, V, E> DerefMut for OrdAllocator<K, V, E>
Source§impl<'de, K, T, O> Deserialize<'de> for OrdAllocator<K, T, O>where
O: Collexetable<T> + Deserialize<'de>,
T: FieldValue + Deserialize<'de>,
K: Id + Deserialize<'de>,
impl<'de, K, T, O> Deserialize<'de> for OrdAllocator<K, T, O>where
O: Collexetable<T> + Deserialize<'de>,
T: FieldValue + Deserialize<'de>,
K: Id + Deserialize<'de>,
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<K, T, O> Serialize for OrdAllocator<K, T, O>
impl<K, T, O> Serialize for OrdAllocator<K, T, O>
Auto Trait Implementations§
impl<K, T, O> Freeze for OrdAllocator<K, T, O>where
T: Freeze,
impl<K, T, O> RefUnwindSafe for OrdAllocator<K, T, O>
impl<K, T, O> Send for OrdAllocator<K, T, O>
impl<K, T, O> Sync for OrdAllocator<K, T, O>
impl<K, T, O> Unpin for OrdAllocator<K, T, O>
impl<K, T, O> UnsafeUnpin for OrdAllocator<K, T, O>where
T: UnsafeUnpin,
impl<K, T, O> UnwindSafe for OrdAllocator<K, T, O>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more