boost_rs_macros/
lib.rs

1#![allow(clippy::needless_doctest_main, unused_imports, unused)]
2#![warn(missing_debug_implementations, missing_docs, rust_2018_idioms)]
3#![doc(test(
4    no_crate_inject,
5    attr(deny(warnings, rust_2018_idioms), allow(dead_code, unused_variables))
6))]
7
8//! Macros for use with Boost-rs
9
10use proc_macro::TokenStream;
11
12mod elapsed;
13mod hello;
14
15/// A derive macro for testing
16#[proc_macro_derive(HelloMacro)]
17#[cfg(not(test))]
18pub fn hello_macro(input: TokenStream) -> TokenStream {
19    // 基于 input 构建 AST 语法树
20    let ast = syn::parse(input).unwrap();
21
22    // 构建特征实现代码
23    hello::impl_hello_macro(&ast)
24}
25
26/// A proc macro for calculating the elapsed time of the function
27#[proc_macro_attribute]
28#[cfg(not(test))]
29pub fn elapsed(args: TokenStream, func: TokenStream) -> TokenStream {
30    elapsed::elapsed(args, func)
31}