Rust 入門コース / レッスン 2
構造体と match
struct でデータをまとめる
関連する値は struct でひとまとめにし、impl でメソッドを生やします。
main.rs
struct Course {
name: String,
lessons: u32,
}
impl Course {
fn summary(&self) -> String {
format!("{}(全{}レッスン)", self.name, self.lessons)
}
}
fn main() {
let c = Course { name: String::from("Rust 入門"), lessons: 2 };
println!("{}", c.summary());
// match: すべてのケースを網羅しないとコンパイルエラー
let level = 2;
match level {
1 => println!("入門"),
2 => println!("初級"),
_ => println!("それ以外"),
}
}
match は「漏れ」を許さない
match は取りうるパターンをすべて書かないとコンパイルが通りません(_ はワイルドカード)。「条件の書き忘れ」をコンパイラが防いでくれる、Rust らしい安全装置です。
✅ 理解度チェック
match 式でその他すべてを受けるパターンは?