4.5 `impl Trait`
05-
impl Trait — Comprehensive Rust1分钟内可阅读完
译文 · 基于 Comprehensive Rust
原文链接: https://google.github.io/comprehensive-rust/generics/impl-trait.html
4.5 impl Trait
与 trait 约束类似,impl Trait 语法可用在函数参数与返回值中:
| |
impl Trait让你能使用无法命名的类型。在不同位置,impl Trait的含义略有不同。
作为参数时,
impl Trait像带 trait 约束的匿名泛型参数。作为返回类型时,它表示返回类型是某个实现了该 trait 的具体类型,但不写出类型名。当你不想在公共 API 中暴露具体类型时,这很有用。
返回位置的类型推断比较难。返回
impl Foo的函数自行选定具体返回类型,而不在源码中写出。返回泛型类型(如collect<B>() -> B)的函数可以返回任何满足B的类型,调用方可能需要选择一个,例如用let x: Vec<_> = foo.collect()或 turbofish:foo.collect::<Vec<_>>()。
debuggable的类型是什么?试着写let debuggable: () = ..看看错误信息显示什么。