我在多个静态类型编程语言(如C++、Haskell等)中工作过,但对于Rust相对较新。
我经常编写以下类似代码:
struct LeafNode<K: Ord + Default + Clone, V: Default + Clone> {
keys: Vec<K>,
values: Vec<V>,
}
impl <K: Ord + Default + Clone, V: Default + Clone> LeafNode<K, V> {
// ...
}
这里的类型约束有很多重复。当在其他地方使用 LeafNode
时(比如说,在构建节点树时),这种情况会进一步恶化。
每当其中一个约束在实现过程中发生更改时,代码需要进行多处修改,因为它们在许多不同的 struct
定义和 impl
块中被命名。
有没有一种方法可以从 K: Ord + Default + Clone
和 V: Default + Clone
创建某种“类型约束别名”?
如果存在这样的方法,它可能有我不知道的名称,这使得搜索这种技术非常困难。因此出现了这个问题。