此问题已在此处有答案:
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 })
型
1条答案
按热度按时间ckocjqey1#
首先需要知道type inference是什么。类型推断可能很方便,但编译器推断类型的能力有一定的限制。
当您编写
Result<u8, _>
时,实际上是向编译器提供了关于类型的部分信息。在许多情况下,这就像编译器所需的最小信息,以便它 * 推断 * 确切的类型,而不必完整地键入它。