Rust中的所有不同错误类型是什么?

11

我正在学习Rust,但找不到所有错误类型的列表。当函数返回结果时,标准库是否有一组可用于使用的预定义错误?

我知道在Rust中可以制作自定义错误类型,那是解决方案吗?需要制作所有自定义错误类型吗?


3
自定义错误类型必须实现 ErrorDisplay 接口。但是,Result 允许使用任何类型作为错误类型,包括字符串和基本类型如 i32 - Zefick
非常感谢大家,这让我比文档更好地理解了 Rust 的 Result 类型和错误处理。 - Josh R
3个回答

7
“错误类型”没有明确定义,因此没有全局错误列表。如果您的意思是“是否有一个包含所有作为Result::Err使用的类型的列表”,答案仍然是否定的。有一些方法,例如slice::binary_search,它们返回Result<usize, usize>usize应该被视为错误类型吗?如果Result::Err完全在函数内部构造并且从未离开该函数,则该类型是否被认为是错误类型?如果一个通用类型包含Result<i32,E>,那么任何具体的E都应该被称为错误类型吗?如果您的意思是“是否有一个实现了std :: error :: Error的所有类型的列表”,那么答案是“有点”。请参阅How can I get a list of structs that implement a particular trait in Rust?以获取详细信息。
“标准库是否有预定义错误组?”

是的。

可供使用

有时候。io::Error 允许您构造自己的错误值,但 num::ParseIntError 不允许。

这是解决方案吗?将所有自定义错误类型都制作出来?

一般来说,是的。

另请参见:


5

标准库中经常会有结果类型的别名。如果您在标准库文档中看到一个函数,可以点击 Result,这应该会带领您到别名类型(例如std::io::Result)。

您可以查看 列表,其中包含了所有实现了 Error 特性的枚举和结构体的标准库。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接