KanoczTomas / partial_application

Partial function application macro for Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

partial_application

This crate contains the partial! macro which allows partial application of a function. Calling partial!(some_fn => arg0, _, arg2, _) will return the closure |x1, x3| some_fn(arg0, x1, arg1, x3).

Move closures can be created by adding move in front of the function: partial!(move ..)

#[macro_use]
extern crate partial_application;

fn foo(a: i32, b: i32, c: i32, d: i32, mul: i32, off: i32) -> i32 {
    (a + b*b + c.pow(3) + d.pow(4)) * mul - off
}

fn main() {
    let bar = partial!(foo => _, _, 10, 42, 10, 10);
    assert_eq!(
        foo(15, 15, 10, 42, 10, 10),
        bar(15, 15)
    );
}

About

Partial function application macro for Rust

License:Apache License 2.0


Languages

Language:Rust 100.0%