[−][src]Crate pydeco
Python-like decorator for Rust
Example
use pydeco::deco; fn logging<F>(func: F) -> impl Fn(i32) -> i32 where F: Fn(i32) -> i32, { move |i| { println!("Input = {}", i); let out = func(i); println!("Output = {}", out); out } } #[deco(logging)] fn add2(i: i32) -> i32 { i + 2 } add2(2);
- Decorator with parameter
use pydeco::deco; use std::{fs, io::Write}; fn logging<InputFunc: 'static>( log_filename: &'static str, ) -> impl Fn(InputFunc) -> Box<dyn Fn(i32) -> i32> where InputFunc: Fn(i32) -> i32, { move |func: InputFunc| { Box::new(move |i: i32| { let mut f = fs::File::create(log_filename).unwrap(); writeln!(f, "Input = {}", i).unwrap(); let out = func(i); writeln!(f, "Output = {}", out).unwrap(); out }) } } #[deco(logging("test.log"))] fn add2(i: i32) -> i32 { i + 2 } add2(2);
Attribute Macros
deco |