《咿呀 能跑就行》是我的个人 solo 播客,草稿版本的 web worker 播客。主打随意和快速消费,如果你对我聊的话题感兴趣,想在 web worker 播客中认真讨论,欢迎和我互动。
本次带读速通 20230731 发布的 Syntax.fm 647 Rust for JavaScript Developers - Node vs Rust Concepts),原时长大概30多分钟,速通大概13分钟。
在比较JavaScript(JS)和Rust的生态方案时,我们可以从基本层面进行介绍,而不需要对Rust的使用经验。
包管理工具 Package Mangernode 可以使用 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 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 表述:什么地方不同?
基本类型13种,包含大量整数类型。两种不同的 flow type。后面可以继续讲,比如类型type、结构、变量。