1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
// -*- rust -*-
tag color {
rgb(int, int, int);
rgba(int, int, int, int);
hsl(int, int, int);
}
fn process(color c) -> int {
let int x;
alt (c) {
case (rgb(?r, _, _)) {
log "rgb";
log r;
x = r;
}
case (rgba(_, _, _, ?a)) {
log "rgba";
log a;
x = a;
}
case (hsl(_, ?s, _)) {
log "hsl";
log s;
x = s;
}
}
ret x;
}
fn main() {
let color gray = rgb(127, 127, 127);
let color clear = rgba(50, 150, 250, 0);
let color red = hsl(0, 255, 255);
assert (process(gray) == 127);
assert (process(clear) == 0);
assert (process(red) == 255);
}
|