とても良い言語
- 初めて書いたのは2020-08-06らしい
-
@Watasuke102: Rustやりましょうか
-
なぜ良い?
- すべてが明示的だから
- 可変・不変
- デフォルトは不変(ここも良い)、可変にしたい時だけmutを付ける
- メソッドも &mut self か &self かという点で区別できる
- move、参照
- C++だとコピーコンストラクタが呼ばれるかどうか、JS等だとシャローコピーか否かを気にしなければならない
- キャスト
- Cは暗黙的にキャストする!
- 所有権
- Shared XOR Mutable (共有か、可変か)もうれしい
- ライフタイム
- オブジェクトがいつまで有効かを示すもの
- C++でfreeしたオブジェクトを参照してしまってセグフォするというやつ、何度やったかわからん
- (dropは暗黙的じゃないか?)
- ファイルを open したあとにdropすると自動でcloseしてくれてうれしいが……
- 可変・不変
- ビルドツール・フォーマッタ等が公式から提供されていて、さらにそれらの質が良い
- CMakeLists.txt を書かなくて済む!(CMake の悪口)
- if が式
- パターンマッチング
- Option / Result の標準的なサポート
- Result に至っては構文レベルでサポートされている(
?演算子)
- Result に至っては構文レベルでサポートされている(
- class ではなく trait
- class のネスト地獄はもうこりごりだよ〜
- トレイト境界ありがとう!
- enum による直和型
- パターンマッチングの強力さとも相まってありがとうになる
- if に必ず
{}が必要- 割とどうでもいいが、個人的にC++を書くときはカッコ内が1行だけであっても書くようにしているため
- エラーがまとも
- これはC++の悪口
何がよくない?
- 所有権が大変
- 学習に時間がかかる
- 他の言語だとGCに任せたらふつうに書ける処理を愚直に書けず、コンパイルを通すのに時間がかかる
- 低レイヤ部分が取り上げられがち
- 「メモリ管理はしたくない」という理由によりRustを選択肢から外す人が多い しねえよ!メモリ管理……
- 本当にプログラマがメモリを管理しなければならないのはCおよび古いC++では?これらは malloc() / free() もしくは new / delete を呼ばないといけない
- 新しいC++だと大抵スマートポインタじゃないですか?
- 組み込みの話はしていない(組み込みにおいて「メモリ管理はしたくない」という主張が出るわけなさすぎる)
- やろうと思えばメモリアロケーも自分で書けるのはRustの良いところ(基本的に書かなくて良い)
- 「メモリ管理はしたくない」という理由によりRustを選択肢から外す人が多い しねえよ!メモリ管理……
- unsafe が不当に攻撃されがち
- 結局 unsafe 使わないと書けないじゃんw 安全とは?w みたいな浅い批判がたくさんある
- C++は全箇所 unsafe だが?
- セグフォといったメモリ関連の不具合が生じたら、原因箇所を unsafe という局所的な領域に絞って探せるのはうれしいと思う
- 結局 unsafe 使わないと書けないじゃんw 安全とは?w みたいな浅い批判がたくさんある
- ビルドが長い
- 特に crate をたくさん追加した時(依存が増えるため、ビルド時間がどんどん長引いていく)
- コミュニティが良くない
- Rustが良いことを示すために他を過剰に下げる人がいる
- 気をつけよう……(ほぼ自戒)
- Rustが良いことを示すために他を過剰に下げる人がいる
- 生成されるバイナリがデカい