想了很久,终于近期心血来潮,花了一个月时间学习一下 rust。

学习资料

心得

rust 无GC是建立在明确的变量生命周期声明基础上的,初学 rust 一定要花时间把生命周期相关的语法概念理解。

rust 和 node.js 一样,大量常用库都依赖社区提供,不像 golang 官方标准库特别完整,一开始找功能库的时候很难受,后面整理一下目前我用的比较顺手的一些库。

工具库推荐

以下工具库都可以在 crates.io 找到文档

  • askama 后端模板库,类似 jinja
  • axum http 框架,内部用了 tokio tower 等热门库实现,可以对接 http1/http2/grpc 等协议
  • time 时间格式化处理
  • tokio rust 的异步框架,基本上所有支持异步的库都基于他
  • tokio-postgres bb8-postgres bb8 异步的 postgresql 驱动及连接池
  • serde 序列化和反序列化库,基本是其他主流库都支持的规范,还有衍生的 serde_derive serde_json
  • reqwest http 请求库
  • clap 命令行参数解析库
  • tracing 链路追踪和日志库,配套还有 tracing-subscriber
  • toml 配置文件解析
  • lazy_static 解决运行时的 static 变量的需求
  • flamegraph 性能调优使用 https://github.com/flamegraph-rs/flamegraph

其他

rust 真越学越有趣,结合重写本网站,慢慢熟悉 rust ,下一步就是 macro 的学习。

不得不说相比我自己掌握的 js 和 go,rust 的语言特性太丰富了。

但是 rust 的上手难度的确高了很多,不如 golang 开箱即用,在武汉研发市场上,用 golang 还是更合适的。