gpt4 book ai didi

rust - 我如何告诉 Rust 某些东西实现了一个特征?

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

<分区>

我正在尝试编写一个返回迭代器的通用函数。

fn one_to_ten<T: Add>() -> std::iter::Iterator<Item = T> {
(1..5).chain(5..=10)
}

它是通用的,因为它需要为 u8 工作通过u128 ,最好还有i8通过i128 ,对于以下代码:

let mut sum: u64 = 0;
for x in one_to_ten() {
sum += x;
}

不幸的是,Rust 提示:

= help: the trait std::marker::Sized is not implemented for (dyn std::iter::Iterator<Item = T> + 'static)
error[E0277]: the size for values of type dyn std::iter::Iterator<Item = _> cannot be known at compilation time

error[E0308]: mismatched types
expected trait std::iter::Iterator, found struct std::iter::Chain

我已经超出了我的理解范围。当我试图实现一个通用函数时,Rust 似乎认为我正在尝试实现一个动态调度函数。 (并且,出于某种原因,我的链式迭代器不被接受为迭代器——我的猜测是我指定的是类型而不是特征,但是 std::iter::Iterator 是特征,而不是类型。)

我的代码应该是什么样的?

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