@@ -18,7 +18,9 @@ use default::Default;
18
18
use fmt:: Debug ;
19
19
use fmt;
20
20
use hash:: { self , Hash } ;
21
- use iter:: { Iterator , ExactSizeIterator , IteratorExt , FromIterator , Map , Chain , Extend } ;
21
+ use iter:: {
22
+ Iterator , IntoIterator , ExactSizeIterator , IteratorExt , FromIterator , Map , Chain , Extend ,
23
+ } ;
22
24
use ops:: { BitOr , BitAnd , BitXor , Sub } ;
23
25
use option:: Option :: { Some , None , self } ;
24
26
@@ -833,6 +835,30 @@ pub struct Union<'a, T: 'a, S: 'a> {
833
835
iter : Chain < Iter < ' a , T > , Difference < ' a , T , S > >
834
836
}
835
837
838
+ impl < ' a , T , S , H > IntoIterator for & ' a HashSet < T , S >
839
+ where T : Eq + Hash < H > ,
840
+ S : HashState < Hasher =H > ,
841
+ H : hash:: Hasher < Output =u64 >
842
+ {
843
+ type Iter = Iter < ' a , T > ;
844
+
845
+ fn into_iter ( self ) -> Iter < ' a , T > {
846
+ self . iter ( )
847
+ }
848
+ }
849
+
850
+ impl < T , S , H > IntoIterator for HashSet < T , S >
851
+ where T : Eq + Hash < H > ,
852
+ S : HashState < Hasher =H > ,
853
+ H : hash:: Hasher < Output =u64 >
854
+ {
855
+ type Iter = IntoIter < T > ;
856
+
857
+ fn into_iter ( self ) -> IntoIter < T > {
858
+ self . into_iter ( )
859
+ }
860
+ }
861
+
836
862
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
837
863
impl < ' a , K > Iterator for Iter < ' a , K > {
838
864
type Item = & ' a K ;
0 commit comments