3 #![allow(non_camel_case_types)]
6 enum pattern { tabby, tortoiseshell, calico }
7 enum breed { beagle, rottweiler, pug }
9 enum ear_kind { lop, upright }
10 enum animal { cat(pattern), dog(breed), rabbit(name, ear_kind), tiger }
12 fn noise(a: animal) -> Option<String> {
14 animal::cat(..) => { Some("meow".to_string()) }
15 animal::dog(..) => { Some("woof".to_string()) }
16 animal::rabbit(..) => { None }
17 animal::tiger => { Some("roar".to_string()) }
22 assert_eq!(noise(animal::cat(pattern::tabby)), Some("meow".to_string()));
23 assert_eq!(noise(animal::dog(breed::pug)), Some("woof".to_string()));
24 assert_eq!(noise(animal::rabbit("Hilbert".to_string(), ear_kind::upright)), None);
25 assert_eq!(noise(animal::tiger), Some("roar".to_string()));