pub struct EntitySet<K>where
K: EntityRef,{ /* private fields */ }
Expand description
A set of K
for densely indexed entity references.
The EntitySet
data structure uses the dense index space to implement a set with a bitvector.
Like SecondaryMap
, an EntitySet
is used to associate secondary information with entities.
Implementations§
Source§impl<K> EntitySet<K>where
K: EntityRef,
Shared EntitySet
implementation for all value types.
impl<K> EntitySet<K>where
K: EntityRef,
Shared EntitySet
implementation for all value types.
Sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
Creates a new empty set with the specified capacity.
Sourcepub fn ensure_capacity(&mut self, capacity: usize)
pub fn ensure_capacity(&mut self, capacity: usize)
Ensure that the set has enough capacity to hold capacity
total
elements.
Sourcepub fn keys(&self) -> Keys<K> ⓘ
pub fn keys(&self) -> Keys<K> ⓘ
Iterate over all the keys up to the maximum in this set.
This will yield intermediate keys on the way up to the max key, even if they are not contained within the set.
use cranelift_entity::{entity_impl, EntityRef, EntitySet};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
struct Entity(u32);
entity_impl!(Entity);
let mut set = EntitySet::new();
set.insert(Entity::new(2));
let mut keys = set.keys();
assert_eq!(keys.next(), Some(Entity::new(0)));
assert_eq!(keys.next(), Some(Entity::new(1)));
assert_eq!(keys.next(), Some(Entity::new(2)));
assert!(keys.next().is_none());
Sourcepub fn iter(&self) -> SetIter<'_, K> ⓘ
pub fn iter(&self) -> SetIter<'_, K> ⓘ
Iterate over the elements of this set.
use cranelift_entity::{entity_impl, EntityRef, EntitySet};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
struct Entity(u32);
entity_impl!(Entity);
let mut set = EntitySet::new();
set.insert(Entity::new(2));
set.insert(Entity::new(3));
let mut iter = set.iter();
assert_eq!(iter.next(), Some(Entity::new(2)));
assert_eq!(iter.next(), Some(Entity::new(3)));
assert!(iter.next().is_none());
Trait Implementations§
Source§impl<K: EntityRef> Extend<K> for EntitySet<K>
impl<K: EntityRef> Extend<K> for EntitySet<K>
Source§fn extend<T: IntoIterator<Item = K>>(&mut self, iter: T)
fn extend<T: IntoIterator<Item = K>>(&mut self, iter: T)
Extends a collection with the contents of an iterator. Read more
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
🔬This is a nightly-only experimental API. (
extend_one
)Extends a collection with exactly one element.
Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
🔬This is a nightly-only experimental API. (
extend_one
)Reserves capacity in a collection for the given number of additional elements. Read more
impl<K> Eq for EntitySet<K>
impl<K> StructuralPartialEq for EntitySet<K>where
K: EntityRef,
Auto Trait Implementations§
impl<K> Freeze for EntitySet<K>
impl<K> RefUnwindSafe for EntitySet<K>where
K: RefUnwindSafe,
impl<K> Send for EntitySet<K>where
K: Send,
impl<K> Sync for EntitySet<K>where
K: Sync,
impl<K> Unpin for EntitySet<K>where
K: Unpin,
impl<K> UnwindSafe for EntitySet<K>where
K: UnwindSafe,
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