我有一个Option
Rust,我需要在接受切片的函数中使用它。如何从Option
whereSome(x)
的切片有一个元素而 的None
切片有零个元素中获取切片?
Cha*_*Rex 23
Option
现在标准库中有as_slice
和方法。as_mut_slice
这将产生一个不可变的切片Option
:
the_option.as_ref()
.map(core::slice::from_ref)
.unwrap_or_default()
Run Code Online (Sandbox Code Playgroud)
这将产生一个可变切片Option
:
the_mutable_option.as_mut()
.map(core::slice::from_mut)
.unwrap_or_default()
Run Code Online (Sandbox Code Playgroud)
第一个使用Option
's as_ref
oras_mut
方法来生成第二个Option
,其中包含对仍位于原始值内的值的引用Option
。
然后,他们使用Option
smap
方法,如果第二个Option
是Some
值,则将core::slice::from_ref
或core::slice::from_mut
应用于该值内的引用Some
,将其更改为单元素切片。
然后,它使用第二个Option
usingOption
方法unwrap_or_default
。如果它是一个Some
值,则会生成上一步中的单元素切片。否则,如果它是一个None
值,则会生成默认切片,它是一个空切片。
您可以使用两个函数:opt_slice和opt_slice_mut ,由板条箱ref_slice提供
pub fn opt_slice<A>(opt: &Option<A>) -> &[A]
pub fn opt_slice_mut<A>(opt: &mut Option<A>) -> &mut [A]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2238 次 |
最近记录: |