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