一年生产环境中的 Rust 使用体验
作者在过去的几个月里,几乎把所有的业余时间都投入到了他的副业——JustFax 的开发中。这个项目最初只是从 LemonSqueezy 迁移到 Stripe 的支付提供商变更,但最终演变成了一个比预期更大的重构项目。作者不得不在 SQL 之上实现一个作业处理队列,并构建一个小型会计系统,所有这些都是用 Rust 完成的。
-
Rust 的编译时安全性
:Rust 的类型安全和编译性质意味着你不会意外地将 i64 赋值给 uuid,编译器会阻止这类错误。这减少了运行时错误的可能性。 -
稳定性
:作者从未经历过 Rust 进程崩溃的情况,这与他使用 Node.js 的经历形成对比。除非代码中滥用 .unwrap(),否则 Rust 程序很少会崩溃。 -
工具链
:Rust 的工具链非常出色,包括 cargo、clippy 等,它们提供了较少的样板代码和心智负担。 -
编译时间
:Rust 的最大缺点是编译时间长,尤其是当使用像 sqlx 或 maud 这样依赖宏的工具时。随着项目增长,编译时间也在增加。 -
工具的差异
:虽然 Rust 在后端开发方面表现出色,但作者发现在 Web 开发方面,Rust 的工具和资源不如 JavaScript/TypeScript 丰富。有时需要阅读源代码或在 GitHub 上寻找类似问题的解决方案。 -
不适合的场景
:对于快速原型设计,Rust 可能不是最佳选择。作者更喜欢使用 TypeScript 和 Astro 或 Svelte 来开发前端。
总之, 作者对一年前选择 Rust 感到满意。Rust 不仅帮助他获得了他非常喜欢的主业,还帮助他构建了更好的软件。他期待未来一年继续开发 Rust。
ratatui: 达成10k star
Ratatui 是一个用于在 Rust 中制作终端用户界面的库。它是一个轻量级库,提供了一系列用于构建复杂的 Rust TUI(文本用户界面)的控件和工具。Ratatui 在 2023 年从 tui-rs 库分叉出来,以便继续其开发。
目前他已经达成10k star成绩.
Rust中真正卫生的
Let语句
文章通过一个故事讲述了 Rust 宏的卫生性问题。开发者Remon在设计一个宏时,遇到了宏内部变量与外部常量冲突的问题。她尝试了多种方法来解决这个问题,包括使用模式匹配和引入虚拟函数来避免名称冲突。虽然这些方法有效,但增加了代码复杂性。最终,Remon选择了一个简单但不完全卫生的宏实现,以保持代码的简洁和易用性。这个故事展示了在实际开发中,开发者需要在宏的卫生性、正确性和实用性之间做出权衡。
hyperion: 高性能的 Minecraft 游戏引擎
Hyperion 的目标是在一个 Minecraft 世界中同时让 10,000 名玩家进行 PvP,以打破吉尼斯世界纪录(由 EVE Online 创下的 8825 记录)。该架构采用基于 Flecs Rust 的 ECS 驱动。
peggen: 一个PEG解析器
一个用于解析表达式文法(PEG)的解析器生成器,它使用内联宏来指定 PEG 操作。
--
From 日报小组 BobQ, FBI小白
社区学习交流平台订阅:
评论区
写评论还没有评论