当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust identity用法及代码示例


本文简要介绍rust语言中 Function core::convert::identity 的用法。

用法

pub const fn identity<T>(x: T) -> T

身份函数。

关于这个函数有两点需要注意:

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

  • 它移动传递给函数的输入x

虽然有一个只返回输入的函数可能看起来很奇怪,但有一些有趣的用途。

例子

使用 identity 在一系列其他有趣的函数中什么都不做:

use std::convert::identity;

fn manipulation(x: u32) -> u32 {
    // Let's pretend that adding one is an interesting function.
    x + 1
}

let _arr = &[identity, manipulation];

在条件中使用 identity 作为 “do nothing” 基本情况:

use std::convert::identity;

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

// Do more interesting stuff...

let _results = do_stuff(42);

使用 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);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function core::convert::identity。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。