我有一个Option英寸的 rust 迹,我需要在一个接受切片的函数中使用它.如何从Option中得到一个切片,其中Some(x)的切片有一个元素,None的切片有零个元素?

推荐答案

这将产生一个Option的不变切片:

the_option.as_ref()
    .map(core::slice::from_ref)
    .unwrap_or_default()

这将产生一个Option的可变切片:

the_mutable_option.as_mut()
    .map(core::slice::from_mut)
    .unwrap_or_default()

第一个使用Optionas_refas_mut方法生成第二个Option,其中包含对仍在原始Option中的值的引用.

然后,他们使用Optionmap方法,如果第二个OptionSome值,则将core::slice::from_refcore::slice::from_mut应用于Some值内的参考,将其更改为一个元素切片.

然后,它使用Optionunwrap_or_default方法消耗第二个Option.如果是Some,则生成上一步中的一个元素切片.否则,如果值为None,则生成默认切片which is an empty slice.

Rust相关问答推荐

为什么类型需要在这个代码中手动指定,在rust?

有没有更好的方法从HashMap的条目初始化 struct ?

编译项目期间使用Cargo生成时出现rustc错误

防止cargo test 中的竞争条件

在文件链实施中绕过borrow 判断器

无法将 rust 蚀向量附加到另一个向量

允许 rust 迹 struct 条目具有多种类型

对于rustc编译的RISC-V32IM二进制文件,llvm objdump没有输出

`actix-web` 使用提供的 `tokio` 运行时有何用途?

在 Rust 中用问号传播错误时对类型转换的困惑?

在 Rust 中,为什么 10 个字符的字符串的 size_of_val() 返回 24 个字节?

带引脚和不带引脚的比较功能

Nom 解析器无法消耗无效输入

返回迭代器考虑静态生命周期类型

当没有实际结果时,如何在 Rust 中强制执行错误处理?

如何基于常量在Rust中跳过一个测试

如何为已实现其他相关 std trait 的每个类型实现一个 std Trait

字符串切片的向量超出范围但原始字符串仍然存在,为什么判断器说有错误?

Rust:为什么在 struct 中borrow 引用会borrow 整个 struct?

在 macro_rules 中转义 $ 美元符号