1 个稳定版本
1.0.0 | 2023年3月6日 |
---|
#29 in #expect
4KB
expect_with
为 expect_with()
添加了 Option<T>
和 Result<T, E>
,其中 E
是 Debug
(所有具有 expect
方法的 std 类型)。
此方法与 except()
功能完全相同,但仅在实际发生错误时评估错误信息。
示例
fn some_heavy_function() -> String {
return String::from("42");
}
let result: Result<(), String> = Err(String::from("some error"));
result.expect_with(|| format!("error {}", some_heavy_function()));
动机
使用 expect
有一个主要的缺点。它每次都会计算它的参数。即使没有发生错误。如果 expect
被频繁调用,并且评估错误信息涉及一些计算(即使是简单的 format
也可能非常慢),这可能会非常慢。expect_with
通过接受 lambda 来消除这种开销,它只在实际需要时才会执行以获取错误信息。