当用作函数的参数类型或返回类型时,“impl”意味着什么?

2023-12-27

我读了这段代码 https://boats.gitlab.io/blog/post/2018-01-25-async-i-self-referential-structs/:

pub fn up_to(limit: u64) -> impl Generator<Yield = u64, Return = u64> {
    move || {
        for x in 0..limit {
             yield x;
        }
        return limit;
    }
}

什么是impl意思是?这如何用普通的 Rust 或 C++ 来实现?


这是新的impl Trait https://github.com/rust-lang/rfcs/blob/master/text/1522-conservative-impl-trait.md语法允许程序员避免命名泛型类型。该功能可用日期为生锈 1.26 https://blog.rust-lang.org/2018/05/10/Rust-1.26.html.

在这里,它被用在返回位置说“返回的类型将实现这个特征,这就是我要告诉你的”。在这种情况下,请注意函数的所有返回路径必须返回完全相同的具体类型。

该语法也可以用于论证立场,在这种情况下,调用者决定传递什么具体类型。

也可以看看:

  • 在 Trait 定义中使用 impl Trait https://stackoverflow.com/q/39482131/155423
  • impl 特征参数和泛型函数参数之间有什么区别? https://stackoverflow.com/q/47514930/155423
  • 是什么使得 `impl Trait` 作为参数“通用”并且作为返回值“存在”? https://stackoverflow.com/q/47929824/155423
  • 返回迭代器(或任何其他特征)的正确方法是什么? https://stackoverflow.com/q/27535289/155423
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当用作函数的参数类型或返回类型时,“impl”意味着什么? 的相关文章

随机推荐