【发布时间】:2018-06-04 10:01:50
【问题描述】:
我在阅读RFC on "expanding" impl Trait 时发现以下内容:
相比之下,首先学习:
fn take_iter(t: impl Iterator),然后尝试:fn give_iter() -> impl Iterator的程序员将是 成功,没有任何严格的理解,他们只是 从普遍性转变为存在性。
虽然我从逻辑的角度理解普遍与存在,但是是什么让第一个高于普遍而第二个存在?
【问题讨论】:
-
之所以选择这种方式是因为这些是最常见的用例。在某些情况下,存在参数类型或通用返回类型会很有用,但这些情况相对较少,因此 RFC 选择不实现它们并保持简单。
-
@interjay 一个普遍量化的返回类型的常见例子是
Into::into()。调用者提供他们想要返回的类型(通常通过推理)。
标签: rust universal existential-type