1extern crate movable;
2
3use movable::Movable;
4
5#[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}