RCIE-ジャンクのコード屋

主に自分のためにコーディングのTIPSを蓄積しています。

Rust 数値で分岐する match, ..=, |

概要

  • 数値で分岐するには match を使う。
  • 数値の範囲で処理を分けたい場合は「..=」を使う。
  • いくつかの数値の場合に対応する場合は「|」を使う。
プログラム例
  • 文字列の入力を要求する。
  • 0~59 なら「不合格」を表示する。
  • 60~99 なら「合格」を表示する。
  • 100 なら「満点」を表示する。
  • それ以外なら「範囲外」を表示する。
use std::io::*;

fn main() {
    let 入力 = コンソール入力();
    let 数値 = 入力.parse::<i32>().unwrap(); // 変換エラー対策は省略
    let 出力 = match 数値 {
        0..=59 => "不合格",
        60..=99 => "合格",
        100 => "満点",
        _ => "範囲外"
    };
    println!("{}", 出力);
}

fn コンソール入力() -> String {
    let mut バッファ = String::new();
    stdin().read_line(&mut バッファ).unwrap();
    バッファ.trim().to_string()
}
解説
  • 「0..=100」は、0から100まで(100を含む)の範囲を表す。
プログラム例2
  • 文字列の入力を要求する。
  • 1, 3, 5, 7, 8, 10, 12 なら「31日」を表示する。
  • 4, 6, 9, 11 なら「30日」を表示する。
  • 2 なら「28日」を表示する。
  • それ以外なら「範囲外」を表示する。
use std::io::*;

fn main() {
    let 入力 = コンソール入力();
    let 数値 = 入力.parse::<i32>().unwrap(); // 変換エラー対策は省略
    let 出力 = match 数値 {
        1 | 3 | 5 | 7 | 8 | 10 | 12 => "31日",
        4 | 6 | 9 | 11 => "30日",
        2 => "28日",
        _ => "範囲外"
    };
    println!("{}", 出力);
}

fn コンソール入力() -> String {
    let mut バッファ = String::new();
    stdin().read_line(&mut バッファ).unwrap();
    バッファ.trim().to_string()
}