有没有一种优雅的方式来比较Option<Vec<u8>>Option<&[u8]>的平等性?(或等效于Result而不是Option.)

推荐答案

你只需要将Option<Vec<u8>>转换为Option<&[u8]>,使用as_ref()Index:

fn foo(a: Option<Vec<u8>>, b: Option<&[u8]>) -> bool {
    a.as_ref().map(|x| &x[..]) == b
}

从Rust 1.40开始,您可以使用as_deref():

fn foo(a: Option<Vec<u8>>, b: Option<&[u8]>) -> bool {
    a.as_deref() == b
}

Rust相关问答推荐

SQL x中的mut *transaction和mut transaction有什么区别?

有没有方法处理rust中嵌套的ok_or()?

如何从接收&;self的方法克隆RC

限制未使用的泛型导致编译错误

MPSC频道在接收器处阻塞

为什么这是&q;,而让&q;循环是无限循环?

如何循环遍历0..V.len()-1何时v可能为空?

正则表达式中的重叠匹配?(铁 rust 正则式发动机)

如果包名称与bin名称相同,并且main.ars位于工作区的同一 crate 中,则无法添加对lib.ars的依赖

为什么BufReader实际上没有缓冲短寻道?

通过写入 std::io::stdout() 输出不可见

Rust中的位移操作对范围有什么影响?

没有得到无法返回引用局部变量`queues`的值返回引用当前函数拥有的数据的值的重复逻辑

我什么时候应该使用特征作为 Rust 的类型?

为什么数组不像向量那样在 for 块之后移动?

n 个范围的笛卡尔积

Rust 跨同一文件夹中文件的可见性

将数据序列化为 struct 模型,其中两个字段的数据是根据 struct 中的其他字段计算的

如何制作具有关联类型的特征的类型擦除版本?

如何在 Rust 中构建一个 str