Struct EntitySet

Source
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.

Source

pub fn new() -> Self

Create a new empty set.

Source

pub fn with_capacity(capacity: usize) -> Self

Creates a new empty set with the specified capacity.

Source

pub fn ensure_capacity(&mut self, capacity: usize)

Ensure that the set has enough capacity to hold capacity total elements.

Source

pub fn contains(&self, k: K) -> bool

Get the element at k if it exists.

Source

pub fn is_empty(&self) -> bool

Is this set completely empty?

Source

pub fn clear(&mut self)

Remove all entries from this set.

Source

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());
Source

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());
Source

pub fn insert(&mut self, k: K) -> bool

Insert the element at k.

Returns true if k was not present in the set, i.e. this is a newly-added element. Returns false otherwise.

Source

pub fn pop(&mut self) -> Option<K>

Removes and returns the entity from the set if it exists.

Trait Implementations§

Source§

impl<K> Clone for EntitySet<K>
where K: EntityRef + Clone,

Source§

fn clone(&self) -> EntitySet<K>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<K> Debug for EntitySet<K>
where K: EntityRef + Debug,

Source§

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

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

impl<K: EntityRef> Default for EntitySet<K>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<K: EntityRef> Extend<K> for EntitySet<K>

Source§

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)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

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
Source§

impl<K> PartialEq for EntitySet<K>
where K: EntityRef + PartialEq,

Source§

fn eq(&self, other: &EntitySet<K>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<K> Eq for EntitySet<K>
where K: EntityRef + Eq,

Source§

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> 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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.