Rust
2024
lazy_static
Rust 对 static 常量的编译时初始化有一些限制:只能使用常量表达式、const 函数来初始化,而不支持非 const 函数,复杂表达式的初始化。
lazy_static 宏提供了在运行时对 static 变量进行初始化的能力,而且支持复杂表达式、调用非 const 函数的初始化。
http/http_body/http_body_util crate
http/http_body/http_body_util crate 是公共的 http 和 body 定义。在 tokio 系列项目,如 hyper/axum/reqwest 中得到广泛应用,这些 crate 通过 import + pub use 的方式导入和使用 http/http_body/http_body_util。
tracing
tracing 提供了结构化日志(event)和诊断(span)系统,对异步程序提供了完善的支持(而传统的 log、log4rs 并不适合异步场景, 会在多次 poll 时重复打印日志)。