目前常见做法是为每个模块或整个 crate 定义单一错误枚举,但会导致函数返回枚举中包含不适用的错误变体。
大型错误枚举削弱了 Rust 类型系统的优势,且创建和转换这些枚举非常繁琐。
terrors 库将错误视为独立 struct 提供更细粒度的错误表示,但在 map_err 调用上略显不便。
error_set 宏化方案可简洁地定义函数级错误集,并自动生成变体联合和转换,实现更灵活的错误处理。
error_set 支持子集判断,使得 ? 运算符可在子集错误集中自动工作。
还有 SmartErr 等其他库及属性宏尝试自动生成错误枚举,但其成熟度各异。
Get notified when new stories are published for "🇨🇳 Hacker News 简体中文"