example/
example.rs

1extern crate movable;
2
3use movable::Movable;
4
5// something  that doesn't implements Copy
6#[derive(PartialEq, Debug)]
7enum NoCopy{A, B}
8
9fn main() {
10
11    let lambda = |a: &NoCopy| match a
12    {
13	NoCopy::A => 0u8, _ => 1
14    };
15
16    let lol = Movable::new(NoCopy::B);
17    println!("{:?}", lol);
18    assert!(lol.use_to(lambda)==1);
19    assert!(!lol.has_moved());
20    assert!(lol.use_to(lambda)==1);
21    assert!(lol.consume() == NoCopy::B);
22    assert!(lol.has_moved());
23    println!("{:?}", lol);
24
25    let lol = Movable::new(NoCopy::A);
26    println!("{:?}", lol);
27    assert!(lol.use_to(lambda)==0);
28    assert!(!lol.has_moved());
29    assert!(lol.use_to(lambda)==0);
30    assert!(lol.consume() == NoCopy::A);
31    assert!(lol.has_moved());
32    println!("{:?}", lol);
33    
34
35        
36        
37}