如何修剪多余的泛型边界?

问题描述 投票:0回答:0

我依靠编译器来告诉我什么时候我的类型/实现的泛型边界不足以及缺少哪些特征约束,但是编译器从不告诉我什么时候我的泛型被过度约束。

是否有一种工具可以找到具有实施任何部分都不需要的约束的泛型?

例如,如果我在

HashMap
周围有一些包装器和
get
的自定义实现:

struct MyWrapper<K, V> {
    inner: HashMap<K, V>,
}

impl<K: Eq + Hash + Serialize, V> MyWrapper<K, V> {
    pub fn my_get(&self, key: &K) -> Option<&V> {
        self.inner.get(key)
    }
}

假设

HashMap
需要密钥
K
Eq + Hash
,而不是
Serialize
,那么最好运行一些工具说,“对不起,但你过度限制了你的 impl如果你愿意,你可以删除
Serialize

有这样的工具吗?

generics rust lint rust-clippy
© www.soinside.com 2019 - 2024. All rights reserved.