繁体   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