Generics 性状与属性状的关系

Generics 性状与属性状的关系,generics,traits,rust,Generics,Traits,Rust,我想知道如何创建绑定到泛型特征的泛型函数 在本例中,我选择了BitXor。std::ops::BitXor的声明是BitXor 因此,如果我们有我们的功能: fn e<T: BitXor>(m:T, k:T) -> T { m ^ k } 所以我试着: fn e<T: BitXor<U, V>, U, V>(m:T, k:T) -> T { m ^ k } 有解决方案吗?以下是位异或特性的完整定义: #[lang="bitxor

我想知道如何创建绑定到泛型特征的泛型函数

在本例中,我选择了
BitXor
std::ops::BitXor
的声明是
BitXor

因此,如果我们有我们的功能:

fn e<T: BitXor>(m:T, k:T) -> T {
    m ^ k
}
所以我试着:

fn e<T: BitXor<U, V>, U, V>(m:T, k:T) -> T {
    m ^ k
}

有解决方案吗?

以下是位异或特性的完整定义:

#[lang="bitxor"]
pub trait BitXor<RHS, Result> {
    fn bitxor(&self, rhs: &RHS) -> Result;
}
在本例中,我们使用更多类型参数来获得最大泛型性

fn e<T: BitXor<T, T>>(m: T, k: T) -> T {
    m ^ k
}
fne(m:T,k:T)->T{
m^k
}
在本例中,我们牺牲泛型来限制所有值为同一类型

fn e<T: BitXor<T, T>>(m: T, k: T) -> T {
    m ^ k
}