// 定义ComplexTrait
trait ComplexTrait {
// 关联类型A
type A;
// 关联类型B,B必须是A的迭代器类型
type B: Iterator<Item = <Self as ComplexTrait>::A>;
// 关联类型C,C必须实现Clone
type C: Clone;
// 关联类型D,D必须是C的迭代器类型
type D: Iterator<Item = <Self as ComplexTrait>::C>;
fn get_iter(&self) -> Self::B;
fn get_clone_iter(&self) -> Self::D;
}
// 定义泛型结构体ComplexStruct
struct ComplexStruct<T, U>
where
T: Clone,
U: Iterator<Item = T>,
{
data: Vec<T>,
iter: U,
}
// 为ComplexStruct实现ComplexTrait
impl<T, U> ComplexTrait for ComplexStruct<T, U>
where
T: Clone,
U: Iterator<Item = T>,
{
type A = T;
type B = U;
type C = T;
type D = std::vec::IntoIter<T>;
fn get_iter(&self) -> Self::B {
self.iter.clone()
}
fn get_clone_iter(&self) -> Self::D {
self.data.clone().into_iter()
}
}