mirror of
https://github.com/ahgamut/rust-ape-example.git
synced 2024-09-20 18:40:15 +00:00
46 lines
939 B
Rust
46 lines
939 B
Rust
|
// ./src/custom_types/enum/enum_use.md
|
||
|
|
||
|
|
||
|
// An attribute to hide warnings for unused code.
|
||
|
#![allow(dead_code)]
|
||
|
|
||
|
enum Status {
|
||
|
Rich,
|
||
|
Poor,
|
||
|
}
|
||
|
|
||
|
enum Work {
|
||
|
Civilian,
|
||
|
Soldier,
|
||
|
}
|
||
|
|
||
|
fn part0() {
|
||
|
// Explicitly `use` each name so they are available without
|
||
|
// manual scoping.
|
||
|
use crate::Status::{Poor, Rich};
|
||
|
// Automatically `use` each name inside `Work`.
|
||
|
use crate::Work::*;
|
||
|
|
||
|
// Equivalent to `Status::Poor`.
|
||
|
let status = Poor;
|
||
|
// Equivalent to `Work::Civilian`.
|
||
|
let work = Civilian;
|
||
|
|
||
|
match status {
|
||
|
// Note the lack of scoping because of the explicit `use` above.
|
||
|
Rich => println!("The rich have lots of money!"),
|
||
|
Poor => println!("The poor have no money..."),
|
||
|
}
|
||
|
|
||
|
match work {
|
||
|
// Note again the lack of scoping.
|
||
|
Civilian => println!("Civilians work!"),
|
||
|
Soldier => println!("Soldiers fight!"),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub fn main() {
|
||
|
part0();
|
||
|
}
|
||
|
|