Rust the Bookを読み始めた

Posted by johtani on Monday, March 23, 2020

目次

自転車本を読み始めましたが、その前に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::Rnggen_rangeのためにuseしている。CLionだとかってにuseを推測して追加してくれた。
  • matchはswitch文みたいな感じ。けど、defaultが必ず実行されるって感じではないな。
    • ただし、全て網羅しないと怒られるのが便利。
    • アームという呼び方が新鮮
    • 単一の式のときは{}が省略できる
    • ブロック{}のときは、終わりにカンマを入力するとrustfmtが除去する(最後の条件かどうかは関係ない)。
  • シャドーイングは面白い。
    • よく、hoge_strhoge_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


Related by prelims-cli