繁体   English   中英

在 Rust 中,将泛型与整数进行比较需要什么特征

[英]In Rust, what trait do I need to compare a generic to an integer

如何将计算结果与泛型进行比较? T 总是一些无符号整数类型(u64、u32 等),所以代码片段中的应该可以工作,但是我如何说服 rust 编译器?

fn reproduction<T>(val: T) -> bool
where
    T: PartialOrd
{
    let var_of_type_integer = 7; // actually the result of a calculation
    if val < var_of_type_integer { // ERROR: expected type parameter, found integer
        return true;
    }
    false
}

PartialOrd trait 可以接受一个泛型参数来指定它可以与什么类型进行比较:

pub trait PartialOrd<Rhs = Self>: PartialEq<Rhs>
where
    Rhs: ?Sized,
{
    // ...
}

所以这编译:

pub fn reproduction<T>(val: T) -> bool
where
    T: PartialOrd<i32>,
{
    let var_of_type_integer = 7;
    if val < var_of_type_integer {
        return true;
    }
    false
}

如果当然只有故事的一半,则能够编译。 当您或用户实际使用某个具体类型的值调用该函数时,该类型必须满足指定的PartialOrd<i32> trait bound。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM