pub enum AdaptiveNodeSet {
Sparse {
max_items: usize,
data: HashSet<NodeId, RapidBuildHasher>,
},
Dense {
data: BitVec,
},
}Expand description
Implementation of NodeSet that dynamically changes the underlying representation
based on its content
The current implementation is initialized with a HashSet, but switches to
BitVec once the data becomes dense.
This has the advantage of allocating little memory if there won’t be many elements,
but avoiding the overhead of HashSet when there are.
let mut node_set = AdaptiveNodeSet::new(100);
assert_eq!(format!("{:?}", node_set), "Sparse { max_items: 100, data: {} }");
node_set.insert(10);
assert_eq!(format!("{:?}", node_set), "Sparse { max_items: 100, data: {10} }");
for i in 20..30 {
node_set.insert(i);
}
assert_eq!(format!("{:?}", node_set), "Dense { data: BitVec { bits: [1072694272, 0], len: 100 } }");Variants§
Implementations§
Trait Implementations§
Source§impl Debug for AdaptiveNodeSet
impl Debug for AdaptiveNodeSet
Source§impl NodeSet for AdaptiveNodeSet
impl NodeSet for AdaptiveNodeSet
Source§impl ReadNodeSet for AdaptiveNodeSet
impl ReadNodeSet for AdaptiveNodeSet
Auto Trait Implementations§
impl Freeze for AdaptiveNodeSet
impl RefUnwindSafe for AdaptiveNodeSet
impl Send for AdaptiveNodeSet
impl Sync for AdaptiveNodeSet
impl Unpin for AdaptiveNodeSet
impl UnwindSafe for AdaptiveNodeSet
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
Source§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
Source§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
Source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
Source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Truncate the current UnsignedInt to a possibly smaller size
Source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
Source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Truncate the current UnsignedInt to a possibly smaller size
Source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
Source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> UpcastableFrom<T> for T
impl<T> UpcastableFrom<T> for T
Source§fn upcast_from(value: T) -> T
fn upcast_from(value: T) -> T
Extend the current UnsignedInt to a possibly bigger size.
Source§impl<T> UpcastableFrom<T> for T
impl<T> UpcastableFrom<T> for T
Source§fn upcast_from(value: T) -> T
fn upcast_from(value: T) -> T
Extend the current UnsignedInt to a possibly bigger size.