《咿呀 能跑就行》是我的個人 solo 播客,草稿版本的 web worker 播客。主打隨意和快速消費,如果你對我聊的話題感興趣,想在 web worker 播客中認真討論,歡迎和我互動。
本次帶讀速通 20230731 發布的 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
還可以 build your doc
還可以發布 rust library
還可以 run code - like npm run start
main package file 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 項目中常用的配置文件格式之一。
類似 yaml
cargo build 構建
發不到一個 rust 內部的註冊表,類似 npm
https://crates.io/
node 中有不同的選項,Python 中更多了,rust 只有一個。有一個 rust fork, crab
Cargo doc
cargo doc 是 Rust 語言中的一個命令行工具,用於生成項目的文檔。它會根據項目中的註釋和文檔註釋(doc comments)生成一個 HTML 格式的文檔網站,以便開發者可以方便地查看和瀏覽項目的文檔。
從代碼註釋中提取為文檔,
繼續看 crates.io ,每隔項目都有 readme,而且大部分都很清晰。因為生成文檔太容易了。
閱讀 docs.rs 文檔,不僅可以學習 rust,還能學習這種風格,在 js 中也可以收益。
類似 jsdoc,比 jsdoc 更容易,但需要學習語法。practice.rs 的 comments-docs
rust is fully typed,類似 ts 的靜態類型,也有泛型。在 ts 中的經驗可以用於 rust
繼續看內存安全 memory safety。是個複雜話題,js 中是有 垃圾回收機制的,Rust 沒有垃圾回收的基礎上構建內存安全。細節比較複雜,就略過了。
並發 concurrency,在 js 中是 single thread 單線程。Rust 支持 multi threading
Promise/async-await Rust 中叫 feature。 Rust 有 async-await 單線程中,和 js 很像。
談到了 await 關鍵字出現的位置和 js 不同。
有時候看 Rust 能看到很多 javascript-like 的代碼。
Rust 沒有 try..catch,處理異常類似模式匹配,有點想 switch
總結來說,Rust 中的錯誤處理方式使用模式匹配來處理錯誤,這種方式更加安全和可靠。與傳統的 try-catch 機制相比,它可以在編譯時捕獲到潛在的錯誤,並提供更好的代碼可讀性和可維護性。
import 導入。導入語法不同,Rust 先導入模塊在使用具體方法,類似 Python,js 中無法使用這種推導。具體雙冒號和斜杠的用法就忽略。
在 js 中都是對象,所以我們 a.b.c
就能訪問對應的數據、功能。在 Rust 中使用 ::
雙冒號
high level 表述:
什麼地方不同?
- 技術選擇更快樂,使用 Rust 提供的足夠,很多東西不需要選擇。
- Rust 有時候像 Typescript/JavaScript
基本類型 13 種,包含大量整數類型。兩種不同的 flow type。後面可以繼續講,比如類型 type、結構、變量。