rebound_proc/
lib.rs

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}