Rust中Result<type, Box<dyn std::error::Error>>是否有内置简写?
Rust中
Result<T, Box<dyn std::error::Error>>的简化方案 Rust标准库目前没有提供全局的内置通用简写,常用的简化方式有两种:
方案1:自定义类型别名(无额外依赖,标准库兼容)
你可以在项目的公共模块中提前统一定义Result类型别名,后续直接调用即可,和原手写写法完全等价:
// 在项目根或公共模块提前定义 type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>; // 实际使用时直接简写 fn something() -> Result<()> { Ok(()) }
方案2:特殊场景原生支持
Rust 1.26及以上版本中,main函数、单元测试函数原生支持直接返回Result类型,这类场景可以直接使用完整签名无需额外简化:
fn main() -> Result<(), Box<dyn std::error::Error>> { // 可以直接使用?运算符抛出错误 let content = std::fs::read_to_string("config.txt")?; println!("{}", content); Ok(()) }
补充说明:如果不限制必须使用标准库,社区常用的
anyhow库提供了开箱即用的anyhow::Result<T>,功能和手写版本一致,还附带错误上下文等扩展能力,适合快速开发业务项目使用。
内容的提问来源于stack exchange,提问作者grawat
相关产品推荐
相关产品推荐

