Crates.io | partial_application |
lib.rs | partial_application |
version | 0.2.1 |
source | src |
created_at | 2018-02-26 23:34:51.538568 |
updated_at | 2020-07-30 13:58:08.8457 |
description | partial function application via the partial! macro |
homepage | |
repository | https://github.com/emerentius/partial_application |
max_upload_size | |
id | 52971 |
size | 23,478 |
The partial!
macro allows for partial application of a function.
partial!(some_fn => arg0, _, arg2, _)
returns the closure |x1, x3| some_fn(arg0, x1, arg2, x3)
.
Move closures are created by adding move
in front of the function: partial!(move ..)
use partial_application::partial;
// When you're using the 2015 edition of Rust, you need to import the macro like this
#[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)
);
}