[][src]Trait pipe_trait::Pipe

pub trait Pipe where
    Self: Sized
{ fn pipe<Return>(self, f: impl FnOnce(Self) -> Return) -> Return { ... } }

All sized types implement this trait.

Provided methods

fn pipe<Return>(self, f: impl FnOnce(Self) -> Return) -> Return

Apply f to self.

Example: Same type

let inc = |x| x + 1;
let double = |x| x + x;
let square = |x| x * x;
let a = (123i32).pipe(inc).pipe(double).pipe(square);
let b = square(double(inc(123i32)));
assert_eq!(a, b);

Example: Type transformation


let x = 'x';
let a = x // char
    .pipe(|x| (x, x, x)) // (char, char, char)
    .pipe(|x| [x, x]) // [(char, char, char); 2]
    .pipe(|x| format!("{:?}", x)); // String
let b = "[('x', 'x', 'x'), ('x', 'x', 'x')]";
assert_eq!(a, b);
Loading content...

Implementors

impl<X: Sized> Pipe for X[src]

Loading content...