リンク
-
https://imoz.jp/note/rust-functions.html[Rustは何が新しいのか(基本的な言語機能の紹介)
-
いもす研 (imos laboratory)]
-
-
-
原版にはhttps://doc.rust-lang.org/book/first-edition/[1st Edition], 2nd Editionがあるが、そのどちらとも違う模様(和訳されているのは1stの古いバージョンか?)
-
学習順序
-
プログラミング言語Rust 3.1数当てゲームまでを実行。
-
Rust by Exampleのhttp://rust-lang-ja.org/rust-by-example/hello.html[1Hello World]を少し読むも、先にテスト方法を見ておいた方がよいかと考える。
-
プログラミング言語Rust 5.2 テストを実行。
-
新用語: アトリビュート(
[test]
,[cfg(test)]
), モジュール
-
-
-
クレート(crate): 他の言語における「ライブラリ」や「パッケージ」(Javaでいうところのpackageではないと思う)
-
モジュール: Javaのpackageのようなもの。ただし階層(ディレクトリ)ごとに可視性を設定できる模様
-
-
-
Javaのアノテーションのようなものか。ただしおそらくコンパイル時に解釈されるもののみ。
-
(少なくとも現時点では)アトリビュートの自作はできない。言語仕様で決められているものがすべて。
-
-
冒頭リンク Rustは何が新しいのかを流し読み。わからないこともいくつかあるがとりあえず流す。
-
`"hoge".into()`の`into`とは? (「into() の返り値は result の型に依存するので、推論には用いられません。」というコメントがあるが…?)
-
ジェネリクスの`&'a`?(「'a は寿命を表し、orig と返り値は同じ寿命であることを表します。」というコメントがあるが…?)
-
-
Rust by Exampleを再開。
-
-
デストラクト単に「分解する」の意味の模様。デストラクタなどの言語仕様的な単語ではない。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」となっており全く意味が違う。
-
-
-
Box: 「Rustにおいて、すべての値はデフォルトでスタックに割り当てられます。Boxを作成することで、値をボックス化、すなわちヒープ上に割り当てることができます。ボックスとは正確にはヒープ上におかれたTの値へのスマートポインタです。」http://rust-lang-ja.org/rust-by-example/std/box.html[17.1 Box, スタックとヒープ] より。
-
やろうとしていることはわかるが各要素が理解できない。後で見直す。
-
-
変数をアンダーバーから始めると未使用でも警告が出ない。
-
型キャストの仕様は独特だが、必要な時に見直せばよいか。 5 型キャスティング
-
未解決の疑問点など
-
メソッドのオーバロードはない?
Rustでオーバーロードが存在すると引数でmoveするのかborrowするのか紛らわしくなるのでそれを嫌っている可能性も?
-
「メソッド」という呼称はなくなった?
-
http://rust-lang-ja.org/rust-by-example/generics/impl.html のタイトルは「メソッド」だが、英語版では https://rustbyexample.com/generics/impl.html "Implementation"(実装)になっている。
-