gpt4 book ai didi

rust - 在以 Self 为成员的特征上实现 From

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

我希望能够将任何迭代器转换为 MyType

impl<T, I: IntoIterator<Item = T>> From<I> for MyType<T>

如在

MyType<T>::from<I: IntoIterator>(iter: I) -> MyType<T>

正如人们所期望的那样,MyType 本身可转换为 Iterator 并满足 IntoIterator 作为特征是有意义的,它确实.

但是 From 是自动为任何类型自反实现的,当然任何类型都可以转换为自身,这就是编译器咆哮的地方:

error[E0119]: conflicting implementations of trait 
`std::convert::From<MyType<_>>` for type `MyType<_>`:

我对所有 IntoIterators 的通用实现与默认实现冲突。如果 Rust 没有提供默认的,那么它实际上可以工作,尽管它的成本不必要地昂贵。

除了 MyType 之外,是否有任何方法可以为 IntoIterator 的任何成员实现特征?

最佳答案

Rust标准库中其实早有先例:Iterator::collect是关于从迭代器创建新值。

遵循此模型,而不是实现 std::convert::From , 你应该实现 std::iter::FromIterator .

这样就不会有冲突了。

关于rust - 在以 Self 为成员的特征上实现 From,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42178842/

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