例如,我想为 Rust 中的容器编写特性(trait):
trait Container: Default {
type ValueType;
}
但我也希望所有的Container
都可以在Container::ValueType
可被Clone
时进行Clone
:
// not Rust code
trait Container: Default + Clone if Self::ValueType: Clone {
type ValueType;
}
当然,我可以有条件地为具体的容器本身实现Clone
特质:
struct MyVec<T> {}
impl<T: Clone> Clone for MyVec<T> {/**/}
或者使用 derive(Clone)
,但我想表达的是对于 Container
特质的意图,而不是为实现类型。
where Self::ValueType: Clone
的语法。这是否意味着与使用type ValueType: Clone
在ValueType
上指定约束的含义相同? - user4815162342where
语法可用,因为它可以应用于更多的事物。例如:trait Container: Iterator where Self::Item: Clone
。 - kmdrekowhere <Self as Iterator>::Item: Clone
。 - user4815162342