rust 泛型类型的尖括号中的下划线模式的用途是什么?[副本]

2ic8powd  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(119)

此问题已在此处有答案

What is Vec<_>?(1个答案)
昨天关门了。
当我阅读这本书的chapter18.1时,我发现我无法理解示例18-1中的这段代码:

let age: Result<u8, _> = "34".parse();

字符串
它将"34"转换为Result::Ok(u8),但如果字符串文字不能转换为Ok(u8),它将转换为什么Error类型?泛型类型的尖括号中的下划线模式的用途是什么?编译器如何确定下划线的类型?
这是我的尝试:

fn main() {
    let age: Result<u8, _> = “abc114514”.parse();
    println(“{:?}”, age);
}


程序运行结果:

Err(ParseIntError { kind: InvalidDigit })

ckocjqey

ckocjqey1#

首先需要知道type inference是什么。类型推断可能很方便,但编译器推断类型的能力有一定的限制。
当您编写Result<u8, _>时,实际上是向编译器提供了关于类型的部分信息。在许多情况下,这就像编译器所需的最小信息,以便它 * 推断 * 确切的类型,而不必完整地键入它。

相关问题