Function std::convert::identity1.33.0 (const: 1.33.0)[][src]

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

The identity function.

Two things are important to note about this function:

While it might seem strange to have a function that just returns back the input, there are some interesting uses.


Using identity to do nothing in a sequence of other, interesting, functions:

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];

Using identity as a "do nothing" base case in a conditional:

use std::convert::identity;

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

// Do more interesting stuff...

let _results = do_stuff(42);

Using identity to keep the Some variants of an iterator of Option<T>:

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