Generics 检查where子句中是否存在相同的关联类型
考虑以下两个特点:Generics 检查where子句中是否存在相同的关联类型,generics,rust,Generics,Rust,考虑以下两个特点: trait Iterator { type Item; fn next(&mut self) -> Option<Self::Item>; } 它将实施 fn peek(&mut self) -> Option<&<I as Iterator>::Item>; 及 选项:从 然后在需要转换时调用Option::from。这似乎有点难看,我想知道这个问题是否可以更简洁地解决。从另一个特征
trait Iterator {
type Item;
fn next(&mut self) -> Option<Self::Item>;
}
它将实施
fn peek(&mut self) -> Option<&<I as Iterator>::Item>;
及
选项:从
然后在需要转换时调用
Option::from
。这似乎有点难看,我想知道这个问题是否可以更简洁地解决。从另一个特征约束中引用一个特征:
struct PeekableSeekable<I>
where I: Iterator
{
iter: I,
peeked: Option<I::Item>,
}
impl<I> PeekableSeekable<I>
where I: Iterator<Item = <I as SeekingIterator>::Item> + SeekingIterator
{
// Implement
}
struct可查看可查看
其中I:迭代器
{
国际热核实验堆:我,
偷看:选项,
}
不可能的,不可能的
其中I:Iterator+seekingterator
{
//实施
}
< /代码>请考虑在将来创建一个。很难猜测impl
块包含的内容。
fn peek(&mut self) -> Option<&<I as Iterator>::Item>;
fn peek_seek(&mut self, other: &<I as SeekingIterator>::Item) -> Option<&<I as SeekingIterator>::Item>
Option<<I as Iterator>::Item>: From<Option<<I as SeekingIterator>::Item>>
Option<<I as SeekingIterator>::Item>: From<Option<<I as Iterator>::Item>>
struct PeekableSeekable<I>
where I: Iterator
{
iter: I,
peeked: Option<I::Item>,
}
impl<I> PeekableSeekable<I>
where I: Iterator<Item = <I as SeekingIterator>::Item> + SeekingIterator
{
// Implement
}