Function core::convert::identity

1.33.0 (const: 1.33.0) · source ·
pub const fn identity<T>(x: T) -> T
Expand description

identity 函数。

关于此函数,有两点需要注意:

  • 它并不总是等同于 |x| x 之类的闭包,因为闭包可能会将 x 强制转换为其他类型。

  • 它将输入 x 传递给函数。

虽然有一个只返回输入的函数似乎很奇怪,但是有一些有趣的用法。

Examples

使用 identity 在其他有趣的函数序列中什么也不做:

use std::convert::identity;

fn manipulation(x: u32) -> u32 {
    // 让我们假设添加一个是一个有趣的函数。
    x + 1
}

let _arr = &[identity, manipulation];
Run

在条件中将 identity 用作 “什么也不做” 的基本情况:

use std::convert::identity;

let do_stuff = if condition { manipulation } else { identity };

// 做更多有趣的事...

let _results = do_stuff(42);
Run

使用 identity 保留 Option<T> 迭代器的 Some 变体:

use std::convert::identity;

let iter = [Some(1), None, Some(3)].into_iter();
let filtered = iter.filter_map(identity).collect::<Vec<_>>();
assert_eq!(vec![1, 3], filtered);
Run