• Result 起别名
    • 参见:

    Result 起别名

    当我们要重复多次使用特定的 Result 类型怎么办呢?回忆一下,Rust 允许我们创建别名。对问题中提到的特定 Result,我们可以很方便地给它定义一个别名。

    在单个模块的级别上创建别名特别有帮助。在特定模块中发现的错误常常会有相同的 Err 类型,所以一个单一的别名就能简便地定义所有的关联 Result。这点太重要了,甚至标准库也提供了一个: io::Result

    下面给出一个快速示例来展示语法:

    1. use std::num::ParseIntError;
    2. // 为带有错误类型 `ParseIntError` 的 `Result` 定义一个泛型别名。
    3. type AliasedResult<T> = Result<T, ParseIntError>;
    4. // 使用上面定义过的别名来表示我们特指的 `Result` 类型。
    5. fn double_number(number_str: &str) -> AliasedResult<i32> {
    6. number_str.parse::<i32>().map(|n| 2 * n)
    7. }
    8. // 这里的别名又让我们节省了一些空间(save some space)。
    9. fn print(result: AliasedResult<i32>) {
    10. match result {
    11. Ok(n) => println!("n is {}", n),
    12. Err(e) => println!("Error: {}", e),
    13. }
    14. }
    15. fn main() {
    16. print(double_number("10"));
    17. print(double_number("t"));
    18. }

    参见:

    Resultio::Result