辛宝Otto

辛宝Otto 的玄酒清谈

北漂前端程序员儿 / 探索新事物 / Web Worker 主播之一/内向话痨
xiaoyuzhou
email

09-速通語法 647 對比 Node/Rust 基礎概念

速通 Syntax 647
速通 Syntax 647
辛寶Otto

《咿呀 能跑就行》是我的個人 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、結構、變量。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。