《咿呀 能跑就行》は私の個人的なソロポッドキャストで、下書きバージョンのウェブワーカーポッドキャストです。自由で迅速な消費を重視しており、私が話しているトピックに興味がある場合は、真剣にウェブワーカーポッドキャストで議論したい場合は、ぜひ私と対話してください。
このエピソードでは、2023 年 7 月 31 日にリリースされた Syntax.fm 647 Rust for JavaScript Developers - Node vs Rust Concepts を紹介します。元の長さは約 30 分で、速通は約 13 分です。
JavaScript(JS)と Rust のエコシステムの比較では、Rust の使用経験がなくても基本的なレベルで説明することができます。
パッケージ管理ツール#
パッケージ管理ツール Package Manger
node では npm
/pnpm
/yarn
を使用できます
rust では Cargo を使用します
Cargo はパッケージ管理だけでなく、テストの実行も行えます。node の vitest/jest/mocha/chai とは異なります。
ドキュメントのビルドも可能です
rust のライブラリを公開することもできます
コードを実行することもできます - npm run start のように
メインのパッケージファイル Cargo.toml
は package.json
に似ています
Cargo.toml
について
Cargo.toml は Rust 言語の設定ファイルであり、プロジェクトのメタデータと依存関係を記述および管理するために使用されます。
Rust プロジェクトでは、
Cargo.toml
ファイルはプロジェクトのルートディレクトリにあります。プロジェクトの設定情報を記述するために、TOML(Tom's Obvious, Minimal Language)形式が使用されます。TOML(Tom's Obvious, Minimal Language)は、Tom Preston-Werner によって作成された軽量な設定ファイル用の形式です。設計目標は、読み書きが容易でありながら、簡潔で明確な構文を保持することです。
TOML は、設定ファイルを簡単に記述および読み取ることを目指して設計されており、Rust コミュニティで広く使用されています。これは、Rust プロジェクトでよく使用される設定ファイル形式の 1 つです。
yaml に似ています
cargo build でビルドします
rust の内部レジストリには npm のようなものがあります
https://crates.io/
node ではさまざまな選択肢がありますが、Python ではさらに多くの選択肢がありますが、rust には 1 つしかありません。rust のフォークである crab があります
Cargo doc
cargo doc は Rust 言語のコマンドラインツールであり、プロジェクトのドキュメントを生成するために使用されます。プロジェクトのコメントとドキュメントコメント(doc comments)に基づいて、HTML 形式のドキュメントウェブサイトが生成され、開発者がプロジェクトのドキュメントを簡単に閲覧できるようになります。
コードコメントからドキュメントを生成します
crates.io を見続けると、ほとんどのプロジェクトには readme があり、ほとんどが明確です。ドキュメントの生成は非常に簡単です。
docs.rs ドキュメント を読むことで、rust を学ぶだけでなく、このスタイルを学ぶこともできます。js でも収穫があります。
jsdoc のようなもので、jsdoc よりも簡単ですが、構文を学ぶ必要があります。practice.rs の comments-docs
rust は完全に型付けされており、ts のような静的型付けとジェネリックがあります。ts での経験は rust にも活かせます
引き続きメモリセーフティ memory safety を見ていきます。これは複雑なトピックであり、js にはガベージコレクションがありますが、Rust はガベージコレクションをベースにメモリセーフティを構築しています。詳細は省略します。
並行性 concurrency では、js はシングルスレッドですが、Rust はマルチスレッドをサポートしています
Promise/async-await は Rust では feature と呼ばれます。Rust には async-await があり、js と非常に似ています。
await キーワードの出現位置が js と異なることに言及しています。
Rust を見ると、しばしば javascript のようなコードが見られます。
Rust には try..catch がなく、例外処理はパターンマッチングのように行われます。スイッチに似ています。
総括すると、Rust ではエラーハンドリングにおいて、パターンマッチングを使用してエラーを処理する方法が使用されます。この方法は、潜在的なエラーをコンパイル時にキャッチし、より良いコードの可読性と保守性を提供します。
import のインポート。インポートの構文は異なり、Rust ではモジュールを先にインポートしてから具体的なメソッドを使用します。Python のようなもので、js ではこのような推論はできません。具体的なコロンとスラッシュの使用法は無視します。
js ではすべてがオブジェクトなので、a.b.c
のように対応するデータや機能にアクセスできます。Rust では ::
ダブルコロンを使用します
ハイレベルに言えば、どこが異なるのでしょうか?
- 技術の選択がより楽しく、Rust が提供するもので十分であり、多くのものを選ぶ必要がありません。
- Rust は時々Typescript/JavaScript のようです
基本的な型は 13 種類で、多くの整数型を含みます。さらに、2 つの異なるフロータイプがあります。後の部分は続けて説明します。例えば、型、構造、変数などです。