gpt4 book ai didi

types - 使用 Iterator::sum 时,在此上下文中必须知道类型

转载 作者:行者123 更新时间:2023-11-29 08:07:39 24 4
gpt4 key购买 nike

<分区>

我正在尝试实现一个特征,该特征对 n 维空间中两点之间的欧氏距离进行建模。这些点表示为 Vec<u32> .

pub trait Point {
fn euclidean_to(&self, other: Vec<u32>) -> f64;
}

impl Point for Vec<u32> {
fn euclidean_to(&self, other: Vec<u32>) -> f64 {
(self.iter()
.zip(other.iter())
.map(|(xa, xb): (&u32, &u32)| (xa - xb).pow(2))
.sum() as f64)
.sqrt()
}
}

逻辑告诉我,这没有理由不起作用。据我所知,类型解析器从上到下工作,因此所有类型都应该是已知的。我正在使用 Intellij-Rust 直到 .map(|(xa, xb): (&u32, &u32)|编译器得到的类型很好,至少我相信它是因为它能够找出并给出关于 (xa, xb) 的类型提示。在我明确指定类型之前。

据我所知,当我使用 sum() 时,一切都在走下坡路。 .我很确定我遗漏了一些东西,因为类型解析器不太可能不知道一些 u32 的总和。 s 是另一个 u32但它仍然给出 type must be known in this context治疗。

我到底错过了什么?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com