| #![feature(type_alias_impl_trait)] | |
| #![allow(dead_code)] | |
| //@ check-pass | |
| use std::fmt::Debug; | |
| pub type Foo = impl Debug; | |
| #[define_opaque(Foo)] | |
| fn foo1(mut x: Foo) { | |
| x = 22_u32; | |
| } | |
| #[define_opaque(Foo)] | |
| pub fn foo_value() -> Foo { | |
| 11_u32 | |
| } | |
| fn foo2(mut x: Foo) { | |
| // no constraint on x | |
| } | |
| fn foo3(x: Foo) { | |
| println!("{:?}", x); | |
| } | |
| fn main() { | |
| foo3(foo_value()); | |
| } |