Function core::convert::identity 1.33.0 (const: 1.33.0)[−][src]
pub const fn identity<T>(x: T) -> T
Expand description
身份函数。
关于此函数,有两点需要注意:
-
它并不总是等同于
|x| x
之类的闭包,因为闭包可能会将x
强制转换为其他类型。 -
它将输入
x
传递给函数。
虽然有一个只返回输入的函数似乎很奇怪,但是有一些有趣的用法。
Examples
使用 identity
在其他有趣的函数序列中什么也不做:
use std::convert::identity; fn manipulation(x: u32) -> u32 { // 让我们假设添加一个是一个有趣的函数。 x + 1 } let _arr = &[identity, manipulation];Run
在条件中将 identity
用作 “do nothing” 终止条件:
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 = vec![Some(1), None, Some(3)].into_iter(); let filtered = iter.filter_map(identity).collect::<Vec<_>>(); assert_eq!(vec![1, 3], filtered);Run