簡體   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