spire_enum_macros 1.2.0

Procedural macros distributed by the crate `spire_enum`.
Documentation
#[allow(unused_imports)]
use super::*;

macro_rules! bail {
	($span:expr => $msg:expr $(,$span_extra:expr => $msg_extra:expr)* $(,)?) => {{
		#[allow(unused_mut)]
		let mut err = Error::new($span.span(), $msg);
		$( err.combine(Error::new($span_extra.span(), $msg_extra)); )*
		return Err(err)
	}};
}

macro_rules! err_expected_only_one {
    ($span1:expr, $span2:expr) => {{
        let err = {
            let mut _temp = Error::new($span1.span(), "expected only one, first occurrence here");
            _temp.combine(Error::new($span2.span(), "second occurrence here"));
            _temp
        };

        return Err(err);
    }};
}

macro_rules! assign_unique_or_panic {
    ($maybe_first:expr, $second:expr) => {
        if let _Some(first) = $maybe_first {
            err_expected_only_one!(first, $second);
        } else {
            $maybe_first = _Some($second);
        }
    };
}

pub(crate) use assign_unique_or_panic;
pub(crate) use bail;
pub(crate) use err_expected_only_one;