@@ -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
7479impl < 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
154174impl < T : fmt:: Debug > fmt:: Debug for Set < T > {
0 commit comments