1#![feature(proc_macro_diagnostic, const_btree_new)]
2#![warn(
3 elided_lifetimes_in_paths,
4 explicit_outlives_requirements,
5 missing_abi,
6 noop_method_call,
7 pointer_structural_match,
8 semicolon_in_expressions_from_macros,
9 unused_import_braces,
10 unused_lifetimes,
11 clippy::cargo,
12 clippy::missing_panics_doc,
13 clippy::doc_markdown,
14 clippy::ptr_as_ptr,
15 clippy::cloned_instead_of_copied,
16 clippy::unreadable_literal
17)]
18
19use proc_macro::TokenStream;
20use quote::quote;
21
22mod error;
23mod extension;
24mod rebound;
25
26#[proc_macro]
27pub fn impl_find(input: TokenStream) -> TokenStream {
28 let name = syn::parse::<syn::Ident>(input).unwrap();
29 let range = 0u8..255u8;
30
31 quote!(
32 #(
33 sum.extend(<Self as ReflectedImpl<#range>>::#name());
34 )*
35 )
36 .into()
37}
38
39#[proc_macro]
40pub fn extern_items(input: TokenStream) -> TokenStream {
41 rebound::extern_items(input.into()).into()
42}
43
44#[proc_macro]
45pub fn extern_assoc_fns(input: TokenStream) -> TokenStream {
46 rebound::extern_assoc_fns(input.into()).into()
47}
48
49#[proc_macro]
50pub fn extern_assoc_consts(input: TokenStream) -> TokenStream {
51 rebound::extern_assoc_consts(input.into()).into()
52}
53
54#[proc_macro_attribute]
55pub fn rebound(attrs: TokenStream, item: TokenStream) -> TokenStream {
56 rebound::rebound(attrs.into(), item.into()).into()
57}