| Crates.io | functionality |
| lib.rs | functionality |
| version | 1.0.0 |
| created_at | 2025-02-22 22:59:56.876292+00 |
| updated_at | 2025-02-22 23:52:52.319999+00 |
| description | Rust |> Functional programming = 💖 |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1565891 |
| size | 3,327 |
Adds support for chaining functions in a functional way.
The following 9 methods are added to all types:
| pipe syntax | traditional syntax equivalent |
|---|---|
x.pipe(f) |
f(x) |
x.pipe_ref(f) |
f(&x) |
x.pipe_mut(f) |
f(&mut x) |
x.pipe_as_ref(f) |
f(x.as_ref()) |
x.pipe_as_mut(f) |
f(x.as_mut()) |
x.pipe_deref(f) |
f(&x) |
x.pipe_deref_mut(f) |
f(&mut x) |
x.pipe_borrow(f) |
f(x.borrow()) |
x.pipe_borrow_mut(f) |
f(x.borrow_mut()) |
These are imported directly from the pipe-trait crate.
use functionality::prelude::*;
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);
The method .mutate(..) is also added to all types.
use functionality::prelude::*;
let sorted = vec![3, 2, 1].mutate(|v| v.sort());
assert_eq!(sorted, vec![1, 2, 3]);