contained_macros/
lib.rs

1/*
2    Appellation: contained-macros <library>
3    Contributors: FL03 <jo3mccain@icloud.com>
4*/
5//! procedural macros for interacting with various wrappers
6extern crate proc_macro;
7
8pub(crate) mod impl_binary;
9
10pub(crate) mod ast {
11    #[doc(inline)]
12    #[allow(unused_imports)]
13    pub use self::{ops::*, wrapper::*};
14
15    mod ops;
16    #[allow(dead_code)]
17    mod wrapper;
18}
19
20use crate::ast::WrapperOpsAst;
21use proc_macro::TokenStream;
22use syn::parse_macro_input;
23
24/// A procedural macro for generating implementations for core binary operations on a wrapper
25/// type
26#[proc_macro]
27pub fn binary_wrapper(input: TokenStream) -> TokenStream {
28    let ast = parse_macro_input!(input as WrapperOpsAst);
29    let output = impl_binary::impl_wrapper_binary_ops(ast);
30    output.into()
31}