やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Rust自習(じゃんけんゲーム3)

 Resultshow()fmt()にした。

成果物

参考

コード

fn main() {
    loop {
        // ...
        println!("{}", res);
//        crate::Result::Win.show(res);
    }
}
#[derive(Debug,PartialEq)]
enum Result { Win, Lose, Draw }
impl std::fmt::Display for crate::Result {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match *self {
            crate::Result::Win => write!(f, "Win!!"),
            crate::Result::Lose => write!(f, "Lose..."),
            crate::Result::Draw => write!(f, "Draw"),
        }
    }
}
/*
impl crate::Result {
    fn show(&self, res: crate::Result) {
        if res == crate::Result::Win { println!("Win!!"); }
        else if res == crate::Result::Lose { println!("Lose..."); }
        else { println!("Draw"); }
    }
}
*/

 コメントアウトした部分を変更した。

所感

 改善した。

  • showメソッドの無駄な引数が不要になった
  • match文により網羅的になり抜けの危険がなくなった
  • println!の分離により汎用的になった

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux

前回まで