extern_trait/
lib.rs

1#![doc = include_str!("../README.md")]
2
3mod args;
4mod decl;
5mod imp;
6mod ty;
7
8use proc_macro::TokenStream;
9use syn::{Error, parse_macro_input};
10
11#[proc_macro_attribute]
12pub fn extern_trait(args: TokenStream, input: TokenStream) -> TokenStream {
13    if !args.is_empty() {
14        let args = parse_macro_input!(args as args::Proxy);
15        decl::expand(args.into(), parse_macro_input!(input))
16    } else {
17        imp::expand(parse_macro_input!(input))
18    }
19    .unwrap_or_else(Error::into_compile_error)
20    .into()
21}