diff --git a/Examples.md b/Examples.md index 8fd093c..9477894 100644 --- a/Examples.md +++ b/Examples.md @@ -322,5 +322,99 @@ fn main() println! "pair contains {:?} and {:?}", integer, decimal +``` + + +#### Enums + + + + + + + +
RustHusht
+ +``` +enum WebEvent { + // An `enum` variant may either be `unit-like`, + PageLoad, + PageUnload, + // like tuple structs, + KeyPress(char), + Paste(String), + // or like structures. + Click { x: i64, y: i64 }, +} + +fn inspect(event: WebEvent) { + match event { + WebEvent::PageLoad => println!("page loaded"), + WebEvent::PageUnload => println!("page unloaded"), + // Destructure `c` from inside the `enum` variant. + WebEvent::KeyPress(c) => println!("pressed '{}'.", c), + WebEvent::Paste(s) => println!("pasted \"{}\".", s), + // Destructure `Click` into `x` and `y`. + WebEvent::Click { x, y } => { + println!("clicked at x={}, y={}.", x, y); + }, + } +} + +fn main() { + let pressed = WebEvent::KeyPress('x'); + let pasted = WebEvent::Paste("my text".to_owned()); + let click = WebEvent::Click { x: 20, y: 80 }; + let load = WebEvent::PageLoad; + let unload = WebEvent::PageUnload; + + inspect(pressed); + inspect(pasted); + inspect(click); + inspect(load); + inspect(unload); +} +``` + + +``` +enum WebEvent + // An `enum` variant may either be `unit-like`, + PageLoad, + PageUnload, + // like tuple structs, + KeyPress(char), + Paste(String), + // or like structures. + Click + x: i64, y: i64 + +fn inspect(event: WebEvent) + match event // Note variant auto-import + PageLoad => println! "page loaded" + PageUnload => println! "page unloaded" + // Destructure `c` from inside the `enum` variant. + KeyPress c => println! "pressed '{}'.", c + Paste s => println! "pasted \"{}\".", s + // Destructure `Click` into `x` and `y`. + Click x, y => + println! "clicked at x={}, y={}.", x, y + + + + +fn main() + let pressed = WebEvent::KeyPress 'x' + pasted = WebEvent::Paste s"my text" + click = WebEvent::Click x: 20, y: 80 + load = WebEvent::PageLoad + unload = WebEvent::PageUnload + + inspect pressed + inspect pasted + inspect click + inspect load + inspect unload + ```
\ No newline at end of file