#zip #function #called #traits #compile-time #combined #allowing

nightly fn_zip

Provides a zip trait for functions, allowing two functions to be combined at compile-time before being called

3 releases

0.1.2 Nov 23, 2023
0.1.1 Jul 4, 2023
0.1.0 Jul 4, 2023

#2900 in Rust patterns

Download history 23/week @ 2024-01-07 69/week @ 2024-01-14 3/week @ 2024-01-21 7/week @ 2024-02-11 41/week @ 2024-02-18 24/week @ 2024-02-25 10/week @ 2024-03-03 25/week @ 2024-03-10 12/week @ 2024-03-17 22/week @ 2024-03-24 75/week @ 2024-03-31 7/week @ 2024-04-07 5/week @ 2024-04-14 10/week @ 2024-04-21

99 downloads per month
Used in 4 crates (2 directly)

MIT license

18KB
382 lines

Combines two functions into one where the arguments are conjoined and the return-values are given in a tuple pair.

Example

use fn_zip::FnZip;

fn a(x: f32) -> f64
{
    (x as f64).sqrt()
}
fn b(x: u8) -> u8
{
    x + 1
}
let ab = a.fn_zip(b); // (f32, u8) -> (f64, u8)

let (x_a, x_b) = (4.0, 23);

let (y_a, y_b) = ab(x_a, x_b);

assert_eq!(y_a, a(x_a));
assert_eq!(y_b, b(x_b));

Dependencies

~1.5MB
~34K SLoC