Rust 比较字节数组和向量

Rust 比较字节数组和向量,rust,Rust,我试图将读取的Vec字节与读入Vec的字节进行比较,但我无法将两侧的类型对齐。这是我的代码(): 您可以看到我在使用let绑定强制执行Vec类型并比较它们之前,每次尝试比较它们都失败了 第一个,assert\u eq!(byte_str,byte_vec),失败原因: `<std macros>:5:8: 5:33 error: the trait `core::cmp::PartialEq<collections::vec::Vec<u8>>` is not

我试图将读取的
Vec
字节与读入
Vec
的字节进行比较,但我无法将两侧的类型对齐。这是我的代码():

您可以看到我在使用
let
绑定强制执行
Vec
类型并比较它们之前,每次尝试比较它们都失败了

第一个,
assert\u eq!(byte_str,byte_vec)
,失败原因:

`<std macros>:5:8: 5:33 error: the trait `core::cmp::PartialEq<collections::vec::Vec<u8>>` is not implemented for the type `&[u8; 21]`
有没有一个更简单的方法可以做到这一点,我错过了

更新:在写问题时,我确实找到了答案,但还是有点笨重:

assert_eq!(byte_str, AsRef::<[u8]>::as_ref(&byte_vec));
但这不会:

assert_eq!(b"012345678901234567890123456789012", &*byte_vec);
因此,您必须在其上调用
as_ref()
,以使其成为一个切片,这些特性是为其实现的:

assert_eq!(b"012345678901234567890123456789012".as_ref(), &*byte_vec);

您可以编写以下内容:

assert_eq!(byte_str, &*byte_vec);
&*
可能看起来像一个no-op,但实际上,它在这里起作用,并改变了一元
*
运算符的含义<因此,code>&*byte_vec相当于
&*(byte_vec.deref())
,或者仅相当于
byte_vec.deref()

assert_eq!(b"012345678901234567890123456789012", &*byte_vec);
assert_eq!(b"012345678901234567890123456789012".as_ref(), &*byte_vec);
assert_eq!(byte_str, &*byte_vec);