Rust学習メモ

リンク

学習順序

  1. プログラミング言語Rust 3.1数当てゲームまでを実行。

  2. Rust by Exampleのhttp://rust-lang-ja.org/rust-by-example/hello.html[1Hello World]を少し読むも、先にテスト方法を見ておいた方がよいかと考える。

  3. プログラミング言語Rust 5.2 テストを実行。

    • 新用語: アトリビュート([test], [cfg(test)]), モジュール

  4. 4.25 クレートとモジュール

    • クレート(crate): 他の言語における「ライブラリ」や「パッケージ」(Javaでいうところのpackageではないと思う)

    • モジュール: Javaのpackageのようなもの。ただし階層(ディレクトリ)ごとに可視性を設定できる模様

  5. 4.27 アトリビュート

    • Javaのアノテーションのようなものか。ただしおそらくコンパイル時に解釈されるもののみ。

    • (少なくとも現時点では)アトリビュートの自作はできない。言語仕様で決められているものがすべて。

  6. 冒頭リンク Rustは何が新しいのかを流し読み。わからないこともいくつかあるがとりあえず流す。

    • `"hoge".into()`の`into`とは? (「into() の返り値は result の型に依存するので、推論には用いられません。」というコメントがあるが…?)

    • ジェネリクスの`&'a`?(「'a は寿命を表し、orig と返り値は同じ寿命であることを表します。」というコメントがあるが…?)

  7. Rust by Exampleを再開。

    • 3.1構造体

      • デストラクト単に「分解する」の意味の模様。デストラクタなどの言語仕様的な単語ではない。http://rust-lang-ja.org/rust-by-example/flow_control/match/destructuring.html[7.5.1 デストラクト]に説明がある。なお原文では destructure/destructuring であり、destructではない。

      • ユニット: 原文ではユニット構造体(unit structs)。単に「ユニット」と呼ぶとほかの何かと混同してしまうのではないか。

      • 「構造体の定義とインスタンスの作成を同時に行う」は原文では「struct instantiation is an expression too」となっており全く意味が違う。

    • 3.2.3 テストケース: 連結リスト

      • Box: 「Rustにおいて、すべての値はデフォルトでスタックに割り当てられます。Boxを作成することで、値をボックス化、すなわちヒープ上に割り当てることができます。ボックスとは正確にはヒープ上におかれたTの値へのスマートポインタです。」http://rust-lang-ja.org/rust-by-example/std/box.html[17.1 Box, スタックとヒープ] より。

      • やろうとしていることはわかるが各要素が理解できない。後で見直す。

    • 変数をアンダーバーから始めると未使用でも警告が出ない。

    • 型キャストの仕様は独特だが、必要な時に見直せばよいか。 5 型キャスティング

未解決の疑問点など

Rustでオーバーロードが存在すると引数でmoveするのかborrowするのか紛らわしくなるのでそれを嫌っている可能性も?