rust/tests/run-pass/traits.rs
2017-07-19 11:38:15 -07:00

31 lines
536 B
Rust

struct Struct(i32);
trait Trait {
fn method(&self);
}
impl Trait for Struct {
fn method(&self) {
assert_eq!(self.0, 42);
}
}
struct Foo<T: ?Sized>(T);
fn main() {
let y: &Trait = &Struct(42);
y.method();
let x: Foo<Struct> = Foo(Struct(42));
let y: &Foo<Trait> = &x;
y.0.method();
let x: Box<Fn(i32) -> i32> = Box::new(|x| x * 2);
assert_eq!(x(21), 42);
let mut i = 5;
{
let mut x: Box<FnMut()> = Box::new(|| i *= 2);
x(); x();
}
assert_eq!(i, 20);
}