arr1[..] == arr2[..] 在 Rust 中意味着什么?

1 rust

我一直在研究一些关于区块链的教程,其中 Rust 是首选语言。

然后,在某个时候,我发现了两个数组之间的比较,使用了我不知道的符号。

我知道 '..' 是 Rust 中的范围操作。它会直接比较两个完整数组的大小和内容吗?

if somearray[..] == anotherarray[..] {
   return Ok(true);
}
Run Code Online (Sandbox Code Playgroud)

我在网上找不到任何直接参考,所以我决定在这里询问。

感谢您澄清它。

Cha*_*man 7

array[..]正在使用 索引数组RangeFull。它返回整个数组,但作为切片而不是数组。这与调用 具有(几乎)相同的效果as_slice()

至于为什么,在 Rust 1.47 之前,数组只能比较最多 32 个元素。不仅如此,您还应该将它们转换为切片。Commit eff62069ad602090e8d27b83cffd9e77479ed4be解除了此限制,但此代码可能是在此之前编写的,并且数组太大,==如果不先转换为切片,则无法使用。