Rustのmatch文で、ある条件では何も処理したくない時の書き方
今回は、とても些細な所なんですが分からかった点がようやく分かったので、その備忘として書き残します。
何が分からなかったかというと、表題のように「Rustのmatch文で何もさせたくない時にどうするか」です。
match文は
match num { 1 => ..., 2 | 3 => ..., _ => ..., }
という感じですが、Rustでコードを書いている時に「match文で、ある条件の時には何もしないでおきたい」という場面があったのですが、例えば下記のように何も処理を書かないとエラーで上手くいきません
1 => ..., 2 | 3 => ..., _ => , // この時だけ何も処理はしたくない }
「えっ、じゃあmatch文使う時って必ず何か処理書かないといけないの!?」と思って色々調べていたらその答えが分かりまして、下記のように書けば大丈夫です。
1 => ..., 2 | 3 => ..., _ => (), // この時だけ何も処理はしたくない }
この()
はユニット型と呼ばれる、要素0のタプルです。何も処理したくない時はこういう風に記述すれば良かったんですね。
ということで分かって嬉しかったので、最後に上の記述を使った、ごく簡単な素数表示プログラムを載せて今回は終わりとします。
fn is_prime(num: u32) -> bool { for i in 2..num { if num % i == 0 { return false; } } true } fn main() { for i in 1..=10 { print!("{}", i); match is_prime(i) { true => print!(", prime!!"), _ => (), }; println!(""); } }
追記 書き終わってから「The Rust Programming Language 日本語版」にちゃんとこのことが書いてあったことに気が付きました💦💦