From 53cd9b95f4c7a05bcd613b2d9f58ba8a4a5e626b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=A8=E6=A0=BC=E5=B0=94=E7=8E=8B?= Date: Sun, 5 Oct 2025 22:35:32 +0800 Subject: [PATCH] Update ch09-02-recoverable-errors-with-result.md --- src/ch09-02-recoverable-errors-with-result.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch09-02-recoverable-errors-with-result.md b/src/ch09-02-recoverable-errors-with-result.md index 40d5f0a..b2f1672 100644 --- a/src/ch09-02-recoverable-errors-with-result.md +++ b/src/ch09-02-recoverable-errors-with-result.md @@ -246,7 +246,7 @@ hello.txt should be included in this project: Os { code: 2, kind: NotFound, mess 示例 9-12: 修改 `main` 返回 `Result<(), E>` 允许对 `Result` 值使用 `?` 运算符 -`Box` 类型是一个**trait 对象**(*trait object*)第十八章[顾及不同类型值的 trait 对象”][trait-objects] 部分会做介绍。目前可以将 `Box` 理解为 “任何类型的错误”。在返回 `Box` 错误类型 `main` 函数中对 `Result` 使用 `?` 是允许的,因为它允许任何 `Err` 值提前返回。即便 `main` 函数体从来只会返回 `std::io::Error` 错误类型,通过指定 `Box`,这个签名也仍是正确的,甚至当 `main` 函数体中增加更多返回其他错误类型的代码,这个函数签名依然保持正确。 +`Box` 类型是一个**trait 对象**(*trait object*),这在第十八章[顾及不同类型值的 trait 对象”][trait-objects] 部分会做介绍。目前可以将 `Box` 理解为 “任何类型的错误”。在返回 `Box` 错误类型的 `main` 函数中对 `Result` 使用 `?` 是被允许的,因为它允许任何 `Err` 值提前返回。即便 `main` 函数体从来只会返回 `std::io::Error` 错误类型,通过指定 `Box`,这个签名也仍是正确的,甚至当 `main` 函数体中增加更多返回其他错误类型的代码,这个函数签名依然保持正确。 当 `main` 函数返回 `Result<(), E>`,如果 `main` 返回 `Ok(())` 可执行程序会以 `0` 值退出,而如果 `main` 返回 `Err` 值则会以非零值退出;成功退出的程序会返回整数 `0`,运行错误的程序会返回非 `0` 的整数。Rust 也会从二进制程序中返回与这个惯例相兼容的整数。