辛宝Otto

辛宝Otto 的玄酒清谈

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

09-速通 Syntax 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、结构、变量。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。