@@ -77,14 +77,15 @@ impl<'a> Iterator for FieldNamesIter<'a> {
7777 self . idx += 1 ;
7878 Some ( i)
7979 }
80- }
8180
82- impl ExactSizeIterator for FieldNamesIter < ' _ > {
83- fn len ( & self ) -> usize {
84- self . inner . len ( ) - self . idx
81+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
82+ let len = self . inner . len ( ) - self . idx ;
83+ ( len, Some ( len ) )
8584 }
8685}
8786
87+ impl ExactSizeIterator for FieldNamesIter < ' _ > { }
88+
8889/// Owned iterator of field names.
8990pub struct FieldNamesIntoIter {
9091 inner : FieldNames ,
@@ -103,14 +104,15 @@ impl Iterator for FieldNamesIntoIter {
103104 self . idx += 1 ;
104105 Some ( i)
105106 }
106- }
107107
108- impl ExactSizeIterator for FieldNamesIntoIter {
109- fn len ( & self ) -> usize {
110- self . inner . len ( ) - self . idx
108+ fn size_hint ( & self ) -> ( usize , Option < usize > ) {
109+ let len = self . inner . len ( ) - self . idx ;
110+ ( len, Some ( len ) )
111111 }
112112}
113113
114+ impl ExactSizeIterator for FieldNamesIntoIter { }
115+
114116impl IntoIterator for FieldNames {
115117 type Item = FieldName ;
116118
@@ -421,3 +423,30 @@ impl Display for DType {
421423 }
422424 }
423425}
426+
427+ #[ cfg( test) ]
428+ mod tests {
429+ use super :: * ;
430+
431+ #[ test]
432+ fn test_field_names_iter ( ) {
433+ let names = [ "a" , "b" ] ;
434+ let field_names = FieldNames :: from ( names) ;
435+ assert_eq ! ( field_names. iter( ) . len( ) , names. len( ) ) ;
436+ let mut iter = field_names. iter ( ) ;
437+ assert_eq ! ( iter. next( ) , Some ( & "a" . into( ) ) ) ;
438+ assert_eq ! ( iter. next( ) , Some ( & "b" . into( ) ) ) ;
439+ assert_eq ! ( iter. next( ) , None ) ;
440+ }
441+
442+ #[ test]
443+ fn test_field_names_owned_iter ( ) {
444+ let names = [ "a" , "b" ] ;
445+ let field_names = FieldNames :: from ( names) ;
446+ assert_eq ! ( field_names. clone( ) . into_iter( ) . len( ) , names. len( ) ) ;
447+ let mut iter = field_names. into_iter ( ) ;
448+ assert_eq ! ( iter. next( ) , Some ( "a" . into( ) ) ) ;
449+ assert_eq ! ( iter. next( ) , Some ( "b" . into( ) ) ) ;
450+ assert_eq ! ( iter. next( ) , None ) ;
451+ }
452+ }
0 commit comments