usakdsteen

ゆうさくですてぃーん

ラスト(3)

https://doc.rust-lang.org/stable/book/

rustのbookを読んで思ったこと適当にメモ

 

https://doc.rust-lang.org/stable/book/guessing-game.html#comparing-guesses
から


use std::cmp::Ordering
とするとstd::cmp::Orderingのスコープを参照できる
cmp()メソッドで比較するとOrdering enumの型(Less,Equal,Greater)を返すらしい
match構文でenumの値ごとの分岐が簡単にできるらしい(見た目Erlangぽい)


read_line()は末尾に改行文字を含むようで
それを取り除くにはtrim()メソッドを使うらしい、trim()メソッドは文字列の頭部と尾部の空白系文字を取り除いた文字列を返すらしい
parse()メソッドでu32に変換できる模様(代入先の変数の型から型推論で文字列の変換を決めてるぽい)
型変換が失敗する場合に備えてexpect()を呼び出す必要があるらしい


loop構文で無限ループを簡単に作れるらしい(rubyっぽい)


match構文は処理が1つだけならカンマで終わらせて、複数あるなら波括弧で括ってコードを書くらしい

さっきのparse()はexpect()を呼ぶかわりにmatch構文での分岐でエラー処理することもできるらしい
Result型(Ok,Err)で結果が返って型のパターンマッチ構文で返却値の取得もできる模様

match構文は全体を式として使えるみたい
その場合は式の戻り値を返すようにするみたいだけど、ジャンプする命令(continue,break)でもよいらしい


前回の記事のとき見落としてたけど
println!()マクロで
最初の文字列に{}の並括弧ペア入れた箇所には第2引数以降に指定した値を置き換えるらしい


以上、今日のラスト終わり