// https://github.com/rust-lang/rust/issues/43869 #![crate_name="foo"] pub fn g() -> impl Iterator { Some(1u8).into_iter() } #[allow(unused_parens)] pub fn h() -> (impl Iterator) { Some(1u8).into_iter() } pub fn i() -> impl Iterator + 'static { Some(1u8).into_iter() } pub fn j() -> impl Iterator + Clone { Some(1u8).into_iter() } pub fn k() -> [impl Clone; 2] { [123u32, 456u32] } pub fn l() -> (impl Clone, impl Default) { (789u32, -123i32) } pub fn m() -> &'static impl Clone { &1u8 } pub fn n() -> *const impl Clone { &1u8 } pub fn o() -> &'static [impl Clone] { b":)" } // issue #44731 pub fn test_44731_0() -> Box> { Box::new(g()) } pub fn test_44731_1() -> Result, ()> { Ok(Box::new(j())) } // NOTE these involve Fn sugar, where impl Trait is disallowed for now, see issue #45994 // //pub fn test_44731_2() -> Box { // Box::new(|_: u32| {}) //} // //pub fn test_44731_3() -> Box impl Clone> { // Box::new(|| 0u32) //} pub fn test_44731_4() -> Box> { Box::new(g()) } //@ has foo/fn.g.html //@ has foo/fn.h.html //@ has foo/fn.i.html //@ has foo/fn.j.html //@ has foo/fn.k.html //@ has foo/fn.l.html //@ has foo/fn.m.html //@ has foo/fn.n.html //@ has foo/fn.o.html //@ has foo/fn.test_44731_0.html //@ has foo/fn.test_44731_1.html //@ has foo/fn.test_44731_4.html