辛宝的玄酒清谈!

A Solo Place.

辛宝Otto

Be a Happy Man

最近在学 Nuxt.js

09-速通 Syntax 647 对比 Node/Rust 基础概念

《咿呀 能跑就行》是我的个人 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、结构、变量。