SuperAPI AI 工具集

rust-impl-error-handling

编程与开发

查看项目

更新于 10-15 22:18

技能介绍

用途:指导 Rust 中可恢复错误的建模与传播。核心观点是可恢复错误是值:Result<T, E> 沿调用图流动,? 运算符在 Err 时提前返回并自动做 From 转换;错误类型应实现 Display + std::error::Error(no_std 用 core::error::Error);panic 只留给程序员 bug,不用于预期失败。

主要能力:区分 Option(有无值,无失败语义)与 Result(成功或带原因的失败);说明 ? 的脱糖形式与 E0277 报错原因;自定义错误类型用 enum(多种失败来源)或 struct(单一概念加丰富上下文);Error trait 需 Debug + Display + source(),包装内层错误时必须实现 source(),且不要把原因塞进 Display;Rust 1.81 起可用 core::error::Error;介绍 map、map_err、and_then、or_else、ok_or、unwrap_or 等组合子;给出库与二进制应用的策略决策树。

使用方式:为每个经 ? 传播的内层错误实现 From;库代码用具体 enum 错误类型,二进制边界可用 anyhow::Result 与 .context();用 map_err 显式转换错误类型;用 assert!、debug_assert!、unreachable!() 做不变量检查。

适用场景:设计返回 Result 的 API、在 Result 与 panic 间取舍、? 无法编译、定义自定义错误类型、错误链与 source 指针、no_std 错误处理。

限制:资料未提供安装命令、版本要求之外的平台信息、收费或效果数据;示例代码与反模式清单详见其 references 文件。