]> git.proxmox.com Git - rustc.git/blame - src/test/run-pass/traits/trait-coercion.rs
New upstream version 1.37.0+dfsg1
[rustc.git] / src / test / run-pass / traits / trait-coercion.rs
CommitLineData
b7449926 1// run-pass
0bf4aa26
XL
2#![allow(dead_code)]
3#![allow(unused_mut)]
4#![allow(unused_variables)]
d9579d0f 5#![feature(box_syntax)]
970d7e83 6
c34b1796 7use std::io::{self, Write};
1a4d82fc
JJ
8
9trait Trait {
10 fn f(&self);
970d7e83
LB
11}
12
c34b1796 13#[derive(Copy, Clone)]
1a4d82fc 14struct Struct {
c34b1796
AL
15 x: isize,
16 y: isize,
970d7e83
LB
17}
18
1a4d82fc
JJ
19impl Trait for Struct {
20 fn f(&self) {
21 println!("Hi!");
970d7e83
LB
22 }
23}
24
dc9dc135 25fn foo(mut a: Box<dyn Write>) {}
c34b1796 26
223e47cc 27pub fn main() {
1a4d82fc 28 let a = Struct { x: 1, y: 2 };
dc9dc135 29 let b: Box<dyn Trait> = Box::new(a);
1a4d82fc 30 b.f();
dc9dc135 31 let c: &dyn Trait = &a;
1a4d82fc
JJ
32 c.f();
33
c34b1796
AL
34 let out = io::stdout();
35 foo(Box::new(out));
223e47cc 36}