nok_codegen/lib.rs
1use proc_macro::TokenStream;
2mod generate_macros;
3mod parse_args;
4
5#[cfg(test)]
6mod test;
7
8/// Generate macros with an embedded `Payload` type.
9/// Each generated macro has a counterpart in the `nok` crate that requires the `Payload` type to
10/// be provided as argument.
11///
12/// Generated macros and their counterparts:
13/// - `error` -> `nok::error_t`
14/// - `err` -> `nok::err_t`
15/// - `to_err_msg` -> `nok::to_err_msg_t`
16/// - `to_err_msg_dbg` -> `nok::to_err_msg_dbg`
17/// - `map_err` -> `nok::map_err_t`
18/// - `map_err_dbg` -> `nok::map_err_dbg_t`
19/// - `replace` -> `nok::replace_t`
20/// - `replace_err` -> `nok::replace_err_t`
21/// - `verify` -> `nok::verify_t`
22/// - `ok_or` -> `nok::ok_or_t`
23///
24/// Arguments are expected as a list of `<ident>: <expr>`'s separated by `,`.
25///
26/// (required) payload_type: <tokens>,
27/// (optional) export_globally: true|false,
28/// if true
29/// then each macro gets prefixed with `#[macro_export]`
30/// else `pub(crate) use <macro>;` is used
31#[proc_macro]
32pub fn generate_macros(input: TokenStream) -> TokenStream {
33 generate_macros::generate_macros(input.into()).into()
34}