retrying_core/lib.rs
1extern crate proc_macro;
2
3use crate::config::RetryingConfig;
4use proc_macro::TokenStream;
5use syn::ItemFn;
6
7mod code_gen;
8mod config;
9mod errors;
10
11/// macros that allows add retrying functionality to rust functions
12/// # Examples
13///
14/// ```ignore
15/// #[retry(stop=(attempts(4)|duration(2)),wait=fixed(1))]
16/// fn my_function() -> Result<(),Error> {
17/// .....
18///}
19/// ```
20#[proc_macro_attribute]
21pub fn retry(args: TokenStream, item: TokenStream) -> TokenStream {
22 let config = RetryingConfig::from_token_stream(args.into()).unwrap();
23
24 let function: ItemFn = syn::parse(item).unwrap();
25
26 crate::code_gen::add_retry_code_into_function(function, config).into()
27}