This commit is contained in:
Wei Zhong 2020-01-03 22:33:41 +08:00 committed by GitHub
parent da974e4201
commit 198fb5d047
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -326,7 +326,7 @@ error[E0277]: the `?` operator can only be used in a function that returns
= note: required by `std::ops::Try::from_error`
```
错误指出只能在返回 `Result` 或者其它实现了 `std::ops::Try` 的类型的函数中使用 `?` 运算符。当你期望在不返回 `Result` 的函数中调用其他返回 `Result` 的函数时使用 `?` 的话,有两种方法修复这个问题。一种技巧是将函数返回值类型修改为 `Result<T, E>`,如果没有其它限制组织你这么做的话。另一种技巧是通过合适的方法使用 `match``Result` 的方法之一来处理 `Result<T, E>`
错误指出只能在返回 `Result` 或者其它实现了 `std::ops::Try` 的类型的函数中使用 `?` 运算符。当你期望在不返回 `Result` 的函数中调用其他返回 `Result` 的函数时使用 `?` 的话,有两种方法修复这个问题。一种技巧是将函数返回值类型修改为 `Result<T, E>`,如果没有其它限制阻止你这么做的话。另一种技巧是通过合适的方法使用 `match``Result` 的方法之一来处理 `Result<T, E>`
`main` 函数是特殊的,其必须返回什么类型是有限制的。`main` 函数的一个有效的返回值是 `()`,同时出于方便,另一个有效的返回值是 `Result<T, E>`,如下所示: