Skip to content

Commit cc331c0

Browse files
committed
adt example
1 parent 9dafd52 commit cc331c0

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

verify/rust_verify/example/adts.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#[macro_use] extern crate builtin_macros;
2+
extern crate builtin;
3+
use builtin::*;
4+
mod pervasive;
5+
use pervasive::*;
6+
7+
#[derive(Structural, PartialEq, Eq)]
8+
struct Car<P> {
9+
four_doors: bool,
10+
passengers: P,
11+
}
12+
13+
#[derive(Structural, PartialEq, Eq)]
14+
enum Vehicle {
15+
Car(Car<int>),
16+
Train(bool),
17+
}
18+
19+
fn test_struct_1(p: int) {
20+
let c1 = Car { four_doors: true, passengers: p };
21+
assert(c1.passengers == p);
22+
assert((Car { passengers: p, four_doors: true }).passengers == p);
23+
}
24+
25+
// fn test_structural_eq(passengers: int) {
26+
// let c1 = Car { passengers, four_doors: true };
27+
// let c2 = Car { passengers, four_doors: false };
28+
// let c3 = Car { passengers, four_doors: true };
29+
//
30+
// assert(c1 == c3);
31+
// assert(c1 != c2);
32+
//
33+
// let t = Vehicle::Train(true);
34+
// let ca = Vehicle::Car(c1);
35+
//
36+
// assert(t != ca);
37+
// // assert(t == ca); // FAILS
38+
// }
39+
40+
fn main() {
41+
}

0 commit comments

Comments
 (0)