1
+ use std:: fmt;
2
+
1
3
pub fn flatten_ok < I , T , E > ( iter : I ) -> FlattenOk < I , T , E >
2
4
where
3
5
I : Iterator < Item = Result < T , E > > ,
@@ -35,12 +37,12 @@ where
35
37
} else {
36
38
self . inner = None ;
37
39
}
38
- } else {
39
- match self . iter . next ( ) {
40
- Some ( Ok ( ok ) ) => self . inner = Some ( ok . into_iter ( ) ) ,
41
- Some ( Err ( e ) ) => return Some ( Err ( e ) ) ,
42
- None => return None ,
43
- }
40
+ }
41
+
42
+ match self . iter . next ( ) {
43
+ Some ( Ok ( ok ) ) => self . inner = Some ( ok . into_iter ( ) ) ,
44
+ Some ( Err ( e ) ) => return Some ( Err ( e ) ) ,
45
+ None => return None ,
44
46
}
45
47
}
46
48
}
@@ -52,10 +54,20 @@ where
52
54
T : IntoIterator ,
53
55
T :: IntoIter : Clone ,
54
56
{
55
- fn clone ( & self ) -> Self {
56
- Self {
57
- iter : self . iter . clone ( ) ,
58
- inner : self . inner . clone ( ) ,
59
- }
57
+ #[ inline]
58
+ clone_fields ! ( iter, inner) ;
59
+ }
60
+
61
+ impl < I , T , E > fmt:: Debug for FlattenOk < I , T , E >
62
+ where
63
+ I : Iterator < Item = Result < T , E > > + fmt:: Debug ,
64
+ T : IntoIterator ,
65
+ T :: IntoIter : fmt:: Debug ,
66
+ {
67
+ fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
68
+ f. debug_struct ( "FlattenOk" )
69
+ . field ( "iter" , & self . iter )
70
+ . field ( "inner" , & self . inner )
71
+ . finish ( )
60
72
}
61
73
}
0 commit comments