| // https://github.com/rust-lang/rust/issues/43869 |
| #![crate_name="foo"] |
| |
| pub fn g() -> impl Iterator<Item=u8> { |
| Some(1u8).into_iter() |
| } |
| |
| #[allow(unused_parens)] |
| pub fn h() -> (impl Iterator<Item=u8>) { |
| Some(1u8).into_iter() |
| } |
| |
| pub fn i() -> impl Iterator<Item=u8> + 'static { |
| Some(1u8).into_iter() |
| } |
| |
| pub fn j() -> impl Iterator<Item=u8> + 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<impl Iterator<Item=u8>> { |
| Box::new(g()) |
| } |
| |
| pub fn test_44731_1() -> Result<Box<impl Clone>, ()> { |
| 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<Fn(impl Clone)> { |
| // Box::new(|_: u32| {}) |
| //} |
| // |
| //pub fn test_44731_3() -> Box<Fn() -> impl Clone> { |
| // Box::new(|| 0u32) |
| //} |
| |
| pub fn test_44731_4() -> Box<Iterator<Item=impl Clone>> { |
| 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 |