目次
自転車本を読み始めましたが、その前にRust the bookを読んだほうが良いかも?と知り合いと話をしていてなったので、先にRust the bookを読み始めてます。 コツコツ読むってのが苦手なので、知り合いと小規模オンライン読書会しながら読むことになりました(基本的になにか書きながら、使い方を調べるので、存在そのものを知らない記述や使用法などがあったりする)。
基本は日本語版を読んでいます。まずは1章から3章あたり。
気になった点などを。自分用のメモなので、読みやすさとかは考えてないです(あとで自分が死ぬパターン?)。
1章
-
rustfmt便利。
- CLionのRustプラグインでは、保存時にrustfmtするというオプションがある。デフォルトはオフ。“Run rustfmt on Save”
-
cargoの
--bin
オプション。意識してつけたことなかった=デフォルトだった。- ライブラリにするときは
--lib
- ライブラリにするときは
2章
- 「変数を値に束縛」という言い回しにまだ慣れない。
- 「代入」という言い方に慣れているから?
- ただ、エラーにはassignってあるな。“error[E0384]: cannot assign twice to immutable variable
x
”
- preludeというのがデフォルトで読み込まれる型が存在する場所。
.expect()
により、Resultが評価済みになる- マクロがまだ慣れない
extern crate rand;
が最新版だと要らなくなっている。rand::Rng
はgen_range
のためにuseしている。CLionだとかってにuseを推測して追加してくれた。match
はswitch文みたいな感じ。けど、defaultが必ず実行されるって感じではないな。- ただし、全て網羅しないと怒られるのが便利。
- アームという呼び方が新鮮
- 単一の式のときは{}が省略できる
- ブロック{}のときは、終わりにカンマを入力するとrustfmtが除去する(最後の条件かどうかは関係ない)。
- シャドーイングは面白い。
- よく、
hoge_str
やhoge_int
のような変数を書くので、ありがたい。 - ただし、コードを読むときに少し混乱しそう?
- よく、
let ... match
で変数への束縛でmatchが使えるのは便利(これまで知らなかったので、変数宣言して条件つけて束縛する処理書いてた)。
シャドーイング?
fn main() {
let x = 5;
let x = x + 1;
let x = x * 2;
println!("The value of x is: {}", x);
}
とか
let spaces = " ";
let spaces = spaces.len();
みたいに、同一変数名を使い回せること。再代入ではない
3章
- constは型注釈が必須
100_000
のような記述が便利(Javaもできるって言われてびっくりしたw)- タプルの中身を一部だけ書き換え可能。(mutを指定すれば)
tup.0 = 20;
のような感じで。
- 配列は固定長でかつ、同一の型のものだけが入る
- 文末にセミコロンがない場合に四季になるというのはちょっと射にくいので辛いのでは。。。
- 自分は明示的に
return
を書きたくなる。が、returnだと動かない場合もある。。。
- 自分は明示的に
let ... if
のような記述もできる。(1..4)
はRange型
おまけ
フィボナッチ数列計算してみろというのがまとめにあったので。こんな感じでいいのかな?
fn calc_fibonacci(n: usize) -> usize {
if n == 0 {
return 0;
} else if n==1 {
return 1;
} else {
return calc_fibonacci(n-1) + calc_fibonacci(n-2);
}
}
その他
知り合いと読みすすめると、人が不思議に思ったところが、自分が理解が曖昧だったことなどに気づけて便利です。
comments powered by Disqus
See Also by Hugo
- Rust the book - 第13章
- Rust the book - 第6章
- Rust the book - 第5章
- Rust the book - 第15章
- Rust the book - 第10章