ワイ史上最強の言語! Rustをちゃんと理解してあげる
はじめに
telumoが思うRustの素晴らしさ
所有権/借用/ライフタイム
難しいと言われるRustの概念について少しだけ。
実装編(Installから〇〇アプリまで)
5. おわりに
まとめます。
リンク | 内容 |
---|---|
Rustプログラミング言語 | Rustの公式ホームページ。シンプルで分かりやすい。 |
The Book | 文法が一通り書かれている。最初から全部読もうとすると大変かも。 |
Rust By Example | コードで説明するタイプ。説明は少なめ。練習問題もあり。 |
標準ライブラリ | Rust標準ライブラリガイド。最初から読む物じゃなくて、参照用。 |
CARGOブック | RustのパッケージマネージャーCargoの説明。参照用。 |
RUSTDOCブック | ドキュメントの作成方法や書き方の説明。参照用。 |
RUSTCブック | RustのコンパイラRustcの説明。参照用。 |
Rustの日本語ドキュメント集 | 日本語ドキュメント。若干古いものあるので注意。 |
Awesome Rust | Rustの便利ツールがリスト化されている。 |
RustはMozillaが作った言語。
Mozillaらしくオープンソース(github)。
RFCの議論さえもYouTubeに公開している!↓
GoとかSwiftとか最近人気な言語はあるやん?
でも、結局、GoogleとかAppleの言語なんよ。
全てのソースコードも確認できて、リクエストも出せる。最高。
こういうのも「最も愛されている」理由かもしれない。
Rustは難しくない。
C/C++, Java, JavaScriptとかを書ける人は普通にRustも書けるよ。
https://github.com/telumo/giflet/blob/master/src/main.rs
速い
Rustは最も速いプログラミング言語の1つ。
CやC++などと同様の速さらしい。
理由の一つにGC(ガベージコレクタ)がないことがある。
メモリ安全
あとで話す所有権のおかげでメモリ安全!
(unsafe
とか使わなければね。)
ゼロコスト抽象化(静的ディスパッチ)
#[test]
って書くだけ
https://github.com/telumo/giflet/blob/master/src/cli.rs#L49
linuxやmacOS上でWindows用のバイナル作る場合は、基本的にはこれだけ。
参考
https://github.com/telumo/giflet/releases
日本人の味覚に合うりんごがアメリカで作れるらしいよ。
まず、null
がない。全て型で理解する。
Result
とOption
を理解する
プログラミング言語やライブラリの名前ではなく、ブラウザでプログラムを高速実行するための、
「ブラウザ上で動くバイナリコードの新しいフォーマット(仕様)」
である。
Google, Microsoft, Mozzila, Appleによって仕様が策定され開発が進められている。
https://qiita.com/ShuntaShirai/items/3ac92412720789576f22
Rust, WebAssembly, and the future of Serverless by Steve Klabnik
これを見るとWebAssemblyが今後のDockerの代わりになるかもしれない。。。!
これはElm
これがRust
オブジェクト思考
※インターフェースに変わる様なtrait
もあるよ。
関数型
関数
パターンマッチ
代数的データ型
トレイトと型クラス
https://doc.rust-jp.rs/the-rust-programming-language-ja/1.6/book/macros.html
#[derive]が便利!
https://qiita.com/apollo_program/items/2495dda519ae160971ed
serde
https://qiita.com/garkimasera/items/0442ee896403c6b78fb2
所有権のルールはこれだけ
突然ですが、これコンパイル通ると思いますか?
これは?
これはどうでしょう?
これなら?
借用
じゃーこれは?
これなら?
結局ボローチェッカーを信じれば大丈夫!
まずは、rustup
コマンドを取得する。
これでcargo
コマンドも一緒に入る。
最新のRustをインストールしておく。
やっぱりVSCode最強説。軽いし、いろんなプラグインがある。
TODO: VSCodeプラグイン作る勉強会やりたい。
RLSを入れると無敵。
一つだけ、Rustパスを設定するのを忘れずに。