我一直在使用相当多的静态类型编程语言(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> {
// ...
}
Run Code Online (Sandbox Code Playgroud)
这里的类型约束有很多重复。LeafNode当在其他东西中使用时(例如,在构建节点树时),情况会进一步复杂化。每当这些约束之一在实现过程中发生变化时,就有很多地方需要更改代码,因为它们在许多不同的struct定义和impl块中命名。
K: Ord + Default + Clone有没有办法从和创建某种“类型约束别名” V: Default + Clone?
如果它存在,它可能有一些我不知道的名称,这使得搜索该技术非常困难。于是就有了这个问题。