wasmtime_environ/collections/
entity_set.rs1use cranelift_entity::{EntityRef, Keys, SetIter};
2use wasmtime_core::error::OutOfMemory;
3
4#[derive(Debug, Default)]
7pub struct EntitySet<K>
8where
9 K: EntityRef,
10{
11 inner: cranelift_entity::EntitySet<K>,
12}
13
14impl<K> EntitySet<K>
15where
16 K: EntityRef,
17{
18 pub fn new() -> Self {
20 EntitySet {
21 inner: Default::default(),
22 }
23 }
24
25 pub fn with_capacity(capacity: usize) -> Result<Self, OutOfMemory> {
27 let mut set = Self::new();
28 set.inner.try_ensure_capacity(capacity)?;
29 Ok(set)
30 }
31
32 pub fn ensure_capacity(&mut self, capacity: usize) -> Result<(), OutOfMemory> {
34 self.inner.try_ensure_capacity(capacity)
35 }
36
37 pub fn is_empty(&self) -> bool {
39 self.inner.is_empty()
40 }
41
42 pub fn contains(&self, k: K) -> bool {
44 self.inner.contains(k)
45 }
46
47 pub fn clear(&mut self) {
49 self.inner.clear();
50 }
51
52 pub fn keys(&self) -> Keys<K> {
57 self.inner.keys()
58 }
59
60 pub fn iter(&self) -> SetIter<'_, K> {
62 self.inner.iter()
63 }
64
65 pub fn insert(&mut self, k: K) -> Result<bool, OutOfMemory> {
70 self.inner.try_ensure_capacity(k.index())?;
71 Ok(self.inner.insert(k))
72 }
73
74 pub fn remove(&mut self, k: K) -> bool {
78 self.inner.remove(k)
79 }
80
81 pub fn pop(&mut self) -> Option<K> {
83 self.inner.pop()
84 }
85}