Skip to content

Commit d3647f0

Browse files
sealed: add more functions
1 parent d052ea0 commit d3647f0

1 file changed

Lines changed: 28 additions & 8 deletions

File tree

src/sealed.rs

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,9 @@ impl<T> Queue<T> {
4646
inner.len() != initial_len
4747
}
4848

49-
pub fn remove_if<F>(&mut self, mut pred: F) -> bool
50-
where
51-
F: FnMut(&T) -> bool,
52-
{
53-
let inner = self.0.get_mut();
54-
let initial_len = inner.len();
55-
inner.retain(|e| !pred(e));
56-
inner.len() != initial_len
49+
pub fn clear(&self) {
50+
let inner = unsafe { &mut *self.0.get() };
51+
inner.clear();
5752
}
5853

5954
pub fn len(&self) -> usize {
@@ -69,6 +64,16 @@ impl<T> Queue<T> {
6964
pub fn is_empty(&self) -> bool {
7065
self.len() == 0
7166
}
67+
68+
pub fn into_inner(self) -> VecDeque<T> {
69+
self.0.into_inner()
70+
}
71+
}
72+
73+
impl<T> From<VecDeque<T>> for Queue<T> {
74+
fn from(vec_deque: VecDeque<T>) -> Self {
75+
Self(UnsafeCell::new(vec_deque))
76+
}
7277
}
7378

7479
impl<T: fmt::Debug> fmt::Debug for Queue<T> {
@@ -145,10 +150,25 @@ impl<T: Eq + Hash> Set<T> {
145150
inner.len()
146151
}
147152

153+
pub fn capacity(&self) -> usize {
154+
let inner = unsafe { &*self.0.get() };
155+
inner.capacity()
156+
}
157+
148158
pub fn is_empty(&self) -> bool {
149159
let inner = unsafe { &*self.0.get() };
150160
inner.is_empty()
151161
}
162+
163+
pub fn into_inner(self) -> HashSet<T> {
164+
self.0.into_inner()
165+
}
166+
}
167+
168+
impl<T> From<HashSet<T>> for Set<T> {
169+
fn from(hash_set: HashSet<T>) -> Self {
170+
Self(UnsafeCell::new(hash_set))
171+
}
152172
}
153173

154174
impl<T: fmt::Debug> fmt::Debug for Set<T> {

0 commit comments

Comments
 (0)