macrofied-toolbox 0.4.2

This library provides an ergonomic experience of adding debugging messages to rust's Result<T,E> and Option<T> patterns
Documentation
use syn::parse::{Parse, ParseStream};

use crate::common::parse::{parse_debug, parse_failed, parse_successful, parse_when};
use crate::common::tracing::{trace_parsed, trace_source};
use crate::option_macro::OptionMacro;

mod kw {
    custom_keyword![none];
    custom_keyword![some];
}

const NONE_SECTION: &str = "none";
const SOME_IDENT: &str = "some";
const SOME_SECTION: &str = "some";

impl Parse for OptionMacro {
    fn parse(input: ParseStream) -> syn::Result<Self> {
        return trace_parsed(parse(trace_source(input)));

        #[inline]
        fn parse(input: ParseStream) -> syn::Result<OptionMacro> {
            let when = parse_when(input, kw::some)?;

            Ok(OptionMacro {
                some: parse_successful(input, &when, SOME_IDENT, SOME_SECTION, kw::some)?,
                when,
                debug: parse_debug(input, &None)?,
                none: parse_failed(input, kw::none, NONE_SECTION, None)?,
            })
        }
    }
}