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

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

2023/8/4
logo of podcast 咿呀 能跑就行!

咿呀 能跑就行!

Frequently requested episodes will be transcribed first

Shownotes Transcript

《咿呀 能跑就行》是我的个人 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/yarnrust 使用 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 表述:什么地方不同?

  • 技术选择更快乐,使用 Rust 提供的足够,很多东西不需要选择。
  • Rust 有时候像 Typescript/JavaScript

基本类型13种,包含大量整数类型。两种不同的 flow type。后面可以继续讲,比如类型type、结构、变量。