Crates.io | wrap |
lib.rs | wrap |
version | 0.1.0 |
source | src |
created_at | 2017-04-05 14:05:58.719293 |
updated_at | 2017-04-07 18:18:30.720782 |
description | Generic function wrapping |
homepage | |
repository | https://github.com/jaemk/wrap |
max_upload_size | |
id | 9696 |
size | 11,988 |
generalized rust wrapping macro
Macros for defining generalized wrappers
and applying them to arbitrary functions. See examples
.
#[macro_use] extern crate wrap;
def_wrapper!{log1 =
before = (fn_args) >> {
println!("* [log-1] >> before everything! fn_args: {:?}", fn_args);
};
after = (wrapped_result) >> {
println!("* [log-1] >> after everything! wrapped_result: {:?}", wrapped_result);
};
}
def_wrapper!{log2 =
before = (fn_args) >> {
println!("* [log-2] >> before everything! fn_args: {:?}", fn_args);
};
after = (wrapped_result) >> {
println!("* [log-2] >> after everything! wrapped_result: {:?}", wrapped_result);
};
}
wrap_with!{log1 >>
fn greet_logged_inner(name: &str) -> String = {
format!("How are you, {}?", name)
}}
wrap_with!{log2 >>
fn greet_logged(name: &str) -> String = {
format!("Hello! {}", greet_logged_inner(name))
}}
pub fn main() {
println!("{}", greet_logged("james"));
}