Skip to main content

arctk_attr/
lib.rs

1//! Support library of attribute macros.
2
3#![warn(
4    clippy::all,
5    clippy::cargo,
6    clippy::missing_docs_in_private_items,
7    clippy::nursery,
8    clippy::pedantic,
9    clippy::restriction
10)]
11#![allow(
12    clippy::blanket_clippy_restriction_lints,
13    clippy::implicit_return,
14    clippy::module_name_repetitions
15)]
16
17extern crate proc_macro;
18extern crate proc_macro2;
19
20mod file;
21mod input;
22mod output;
23mod save;
24
25use proc_macro::TokenStream;
26
27/// Create the attribute macro input.
28#[proc_macro_attribute]
29#[inline]
30#[must_use]
31pub fn input(metadata: TokenStream, input: TokenStream) -> TokenStream {
32    input::implementation(&metadata, input)
33}
34
35/// Create the attribute macro output.
36#[proc_macro_attribute]
37#[inline]
38#[must_use]
39pub fn output(metadata: TokenStream, input: TokenStream) -> TokenStream {
40    output::implementation(&metadata, input)
41}
42
43/// Create the attribute macro file.
44#[proc_macro_attribute]
45#[inline]
46#[must_use]
47pub fn file(metadata: TokenStream, input: TokenStream) -> TokenStream {
48    file::implementation(&metadata, input)
49}
50
51/// Create the attribute macro save.
52#[proc_macro_attribute]
53#[inline]
54#[must_use]
55pub fn save(metadata: TokenStream, input: TokenStream) -> TokenStream {
56    save::implementation(&metadata, input)
57}