//@ run-passstructA<F:FnOnce()->T,T>(F::Output);structB<F:FnOnce()->T,T>(A<F,T>);// Removing Option causes it to compile.fnfoo<T,F:FnOnce()->T>(f:F)->Option<B<F,T>>{Some(B(A(f())))}fnmain(){letv=(||foo(||4))();matchv{Some(B(A(4)))=>{},_=>unreachable!()}}