rust 学习心得整理 - 重构了本网站
提醒:本文最后更新于 2023/01/29 ,文中所描述的信息可能已发生改变,请谨慎使用。
想了很久,终于近期心血来潮,花了一个月时间学习一下 rust。
学习资料
- 官方"快速"入门 https://doc.rust-lang.org/book/ch00-00-introduction.html
- 官方的语法例子 https://doc.rust-lang.org/rust-by-example/index.html
- 常用功能和常用第三方库例子 https://rust-lang-nursery.github.io/rust-cookbook/intro.html
- 第三方库检索工具 https://crates.io
- 各种库通用文档中心 https://docs.rs
心得
rust 无GC是建立在明确的变量生命周期声明基础上的,初学 rust 一定要花时间把生命周期相关的语法概念理解。
rust 和 node.js 一样,大量常用库都依赖社区提供,不像 golang 官方标准库特别完整,一开始找功能库的时候很难受,后面整理一下目前我用的比较顺手的一些库。
工具库推荐
以下工具库都可以在 crates.io 找到文档
askama
后端模板库,类似 jinjaaxum
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 还是更合适的。