|
|
|
@ -513,7 +513,7 @@ fn render() -> Result<String, std::io::Error> {
|
|
|
|
|
|
|
|
|
|
上面的代码会报错,原因在于 `render` 函数中的两个 `?` 返回的实际上是不同的错误:`env::var()` 返回的是 `std::env::VarError`,而 `read_to_string` 返回的是 `std::io::Error`。
|
|
|
|
|
|
|
|
|
|
为了满足 `render` 函数的签名,我们就需要将 `env::VarError` 和 `io::Error` 归一化为同一种错误类型。要实现这个目的有两种方式:
|
|
|
|
|
为了满足 `render` 函数的签名,我们就需要将 `env::VarError` 和 `io::Error` 归一化为同一种错误类型。要实现这个目的有三种方式:
|
|
|
|
|
|
|
|
|
|
- 使用特征对象 `Box<dyn Error>`
|
|
|
|
|
- 自定义错误类型
|
|
|
|
|