簡體   English   中英

為什么在 Rust 中比較 Vector 和 Array 沒有錯誤?

[英]Why is there no error comparing Vector and Array in Rust?

我知道 Array 和 Vector 在 Rust 語言中是不同的類型,但是我想知道為什么將兩者進行比較沒有錯誤。

// Rust Programming Language
fn main() {
    let vec = vec!["a", "b", "c"];  // Vector
    let arr = ["a", "b", "c"];      // Array
    println!("{}", vec == arr);     // true!                                                 
}

因為Vec<T>實現PartialEq<[T; N]> PartialEq<[T; N]> ,允許您將向量與數組進行比較。

您可以通過實現PartialEq trait 來重載 Rust 中的相等運算符,它需要一個(可選,默認為Self )泛型參數來允許您為左側( Self ,實現類型)和右側(泛型參數,默認相同)。

==運算符適用於實現PartialEq特征的任何類型。 可以為左側和右側的不同類型實現特征。 在這種情況下, Vec<T>實現了所有這些切片類型的特征:

PartialEq<&'_ [U; N]>
PartialEq<&'_ [U]>
PartialEq<&'_ mut [U]>
PartialEq<[U; N]>
PartialEq<[U]>

代碼中的數組類型為[&str; 3] [&str; 3] ,匹配[U; N] [U; N] ,因此這是有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM