@@ -225,8 +225,8 @@ mod m6 {
225225 impl < T > MyEnum < T > {
226226 fn m1 ( self ) -> T {
227227 match self {
228- MyEnum :: C1 ( a) => a, // missing
229- MyEnum :: C2 { a } => a, // missing
228+ MyEnum :: C1 ( a) => a,
229+ MyEnum :: C2 { a } => a,
230230 }
231231 }
232232 }
@@ -402,8 +402,8 @@ mod m9 {
402402 impl < T > MyOption < MyOption < T > > {
403403 fn flatten ( self ) -> MyOption < T > {
404404 match self {
405- MyOption :: MyNone ( ) => MyOption :: MyNone ( ) , // missing inner type `Option<T>`
406- MyOption :: MySome ( x) => x, // missing
405+ MyOption :: MyNone ( ) => MyOption :: MyNone ( ) ,
406+ MyOption :: MySome ( x) => x,
407407 }
408408 }
409409 }
@@ -432,6 +432,27 @@ mod m9 {
432432
433433 let x6 = MyOption :: MySome ( MyOption :: < S > :: MyNone ( ) ) ;
434434 println ! ( "{:?}" , MyOption :: <MyOption <S >>:: flatten( x6) ) ;
435+
436+ let from_if = if 1 + 1 > 2 {
437+ MyOption :: MyNone ( )
438+ } else {
439+ MyOption :: MySome ( S )
440+ } ;
441+ println ! ( "{:?}" , from_if) ;
442+
443+ let from_match = match 1 + 1 > 2 {
444+ true => MyOption :: MyNone ( ) ,
445+ false => MyOption :: MySome ( S ) ,
446+ } ;
447+ println ! ( "{:?}" , from_match) ;
448+
449+ let from_loop = loop {
450+ if 1 + 1 > 2 {
451+ break MyOption :: MyNone ( ) ;
452+ }
453+ break MyOption :: MySome ( S ) ;
454+ } ;
455+ println ! ( "{:?}" , from_loop) ;
435456 }
436457}
437458
0 commit comments