1 #![feature(unsized_locals)]
4 fn foo(self) -> String;
10 fn foo(self) -> String {
18 fn foo(self) -> String {
26 fn foo(self) -> String {
31 struct D(Box<String>);
34 fn foo(self) -> String {
41 let x = *(Box::new(A) as Box<dyn Foo>);
42 assert_eq!(x.foo(), format!("hello"));
43 let x = *(Box::new(B(42)) as Box<dyn Foo>);
44 assert_eq!(x.foo(), format!("42"));
45 let x = *(Box::new(C(format!("jumping fox"))) as Box<dyn Foo>);
46 assert_eq!(x.foo(), format!("jumping fox"));
47 let x = *(Box::new(D(Box::new(format!("lazy dog")))) as Box<dyn Foo>);
48 assert_eq!(x.foo(), format!("lazy dog"));