Hand
のfrom
メソッドをFrom
トレイトにした。
成果物
参考
コード
fn main() { loop { // ... // let player = Hand::Rock.from(player); let player = Hand::from(player); // ... } }
impl From<u32> for Hand { fn from(hand: u32) -> Hand { match hand { 1 => Hand::Rock, 2 => Hand::Scissors, 3 => Hand::Paper, _ => panic!("手は1〜3のいずれかで指定してください。") } } } impl Hand { /* fn from(&self, hand: u32) -> Hand { match hand { 1 => Hand::Rock, 2 => Hand::Scissors, 3 => Hand::Paper, _ => panic!("手は1〜3のいずれかで指定してください。") } } */ fn random(&self) -> Hand { // ... // self.from(hand) Hand::from(hand) }
コメントアウトの部分を変更した。from
メソッドをFrom
トレイトのfrom
メソッドに変更した。
所感
enum
のimpl
でfn(&self)
のように第一引数をself
にするとEnum::Member.fn()
、self
なしだとEnum::fn()
になるらしい。
こんな基礎すら知らなかった。The Bookに書いてあったっけ?
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- rustc 1.34.2 (6c2484dc3 2019-05-13)
- cargo 1.34.0 (6789d8a0a 2019-04-01)
$ uname -a Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
前回まで
- Rust学習まとめ(ドキュメント)
- Rust自習(じゃんけんゲーム1)
- Rust自習(双方向リスト1)
- Rust自習(単方向リスト1)
- Rust自習(単方向リスト2)
- Rust自習(単方向リスト3)
- Rust自習(単方向リスト4)
- Rust自習(単方向リスト5)
- Rust自習(単方向リスト6)
- Rust自習(単方向リスト7)
- Rust自習(リストのインタフェースを考える)
- Rust自習(連結リスト1)
- Rust自習(連結リスト2)
- Rust自習(連結リスト3)
- Rust自習(連結リスト4)
- Rust自習(連結リストの取得系インタフェース考察)
- Rust自習(連結リスト5)
- Rust自習(連結リストの取得系インタフェース考察2)
- Rust自習(連結リスト6)
- Rust自習(連結リスト7)
- Rust自習(連結リスト8)
- Rust自習(連結リスト9)
- Rust自習(変数名でイテレートする方法)
- Rust自習(iter、iter_mut実装方法)
- Rust自習(連結リスト10)
- Rust自習(rev()実装できず)
- Rust自習(cycle()実装できず)
- Rust自習(じゃんけんゲーム2)
- Rust自習(じゃんけんゲーム3)
- Rust自習(じゃんけんゲーム4)