當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。