Rust中是否有内置标识功能?

Fre*_*ios 11 rust

我有一个Options 矢量,我想只过滤Somes.我使用filter_map身份:

let v = vec![Some(1), None, Some(2)];
for i in v.into_iter().filter_map(|o| o) {
    println!("{}", i);
}
Run Code Online (Sandbox Code Playgroud)

是否有内置函数允许编写类似的东西filter_map(identity)

She*_*ter 8

不,在稳定的Rust中没有这样的功能.你可以创建自己的:

fn id<T>(v: T) -> T { v } 
Run Code Online (Sandbox Code Playgroud)

虽然大多数人都像你一样内联代码.

  • @Boiethios我会非常犹豫地称之为"身份",因为它会改变价值.我也没有把它称为"deref",因为这意味着Rust中的某些东西不是那个函数所做的.此外,该功能是多余的; 你可以说'Option :: as_ref`代替. (3认同)