Rust语言:Match控制模式
enum Coin {
Penny,
Nickel,
Dime,
Quarter,
}
fn value_in_cents(coin: Coin) -> u8 {
match coin {
Coin::Penny => 1,
Coin::Nickel => 5,
Coin::Dime => 10,
Coin::Quarter => 25,
}
}
fn main() {
let p = Coin::Penny;
let n = Coin::Nickel;
value_in_cents(p);
value_in_cents(n);
}
fn value_in_cents(coin: Coin) -> u8 {
match coin {
Coin::Penny => {
println!("Lucky penny!");
1
}
Coin::Nickel => 5,
Coin::Dime => 10,
Coin::Quarter => 25,
}
}
#[derive(Debug)] // so we can inspect the state in a minute
enum UsState {
Alabama,
Alaska,
// --snip--
}
enum Coin {
Penny,
Nickel,
Dime,
// 这里添加了一个Enum类型
Quarter(UsState),
}
fn value_in_cents(coin: Coin) -> u8 {
match coin {
Coin::Penny => 1,
Coin::Nickel => 5,
Coin::Dime => 10,
Coin::Quarter(state) => {
println!("State quarter from {:?}!", state);
25
}
}
}
fn main() {
let u = Coin::Quarter(UsState::Alabama);
value_in_cents(p);
}
fn main() {
fn plus_one(x: Option<i32>) -> Option<i32> {
match x {
None => None,
> Some(i + 1), =
}
}
let five = Some(5);
let six = plus_one(five);
let none = plus_one(None);
}
fn main() {
fn plus_one(x: Option<i32>) -> Option<i32> {
match x {
> Some(i + 1), =
}
}
let five = Some(5);
let six = plus_one(five);
let none = plus_one(None);
}
fn main() {
fn plus_one(x: Option<i32>) -> Option<i32> {
match x {
> Some(i + 1), =
a => a,
}
}
let five = Some(5);
let six = plus_one(five);
let none = plus_one(None);
}
fn main() {
fn plus_one(x: Option<i32>) -> Option<i32> {
match x {
> Some(i + 1), =
_ => temp(),
}
}
let five = Some(5);
let six = plus_one(five);
let none = plus_one(None);
fn temp(){}
}
fn main() {
let dice_roll = 9;
match dice_roll {
3 => add_fancy_hat(),
7 => remove_fancy_hat(),
_ => (),
}
fn add_fancy_hat() {}
fn remove_fancy_hat() {}
}
THE END