fastmetrics_derive/
lib.rs

1//! This crate provides some derive macros for `fastmetrics`.
2
3#![deny(unsafe_code)]
4#![deny(unused_crate_dependencies)]
5#![forbid(unsafe_code)]
6
7mod encode_label_set;
8mod encode_label_value;
9mod state_set_value;
10
11use proc_macro::TokenStream;
12use syn::{parse_macro_input, DeriveInput};
13
14// `fastmetrics::encoder::EncodeLabelSet`
15#[proc_macro_derive(EncodeLabelSet)]
16pub fn derive_encode_label_set(input: TokenStream) -> TokenStream {
17    let input = parse_macro_input!(input as DeriveInput);
18    encode_label_set::expand_derive_encode_label_set(input)
19        .unwrap_or_else(syn::Error::into_compile_error)
20        .into()
21}
22
23// `fastmetrics::encoder::EncodeLabelValue`
24#[proc_macro_derive(EncodeLabelValue)]
25pub fn derive_encode_label_value(input: TokenStream) -> TokenStream {
26    let input = parse_macro_input!(input as DeriveInput);
27    encode_label_value::expand_derive_encode_label_value(input)
28        .unwrap_or_else(syn::Error::into_compile_error)
29        .into()
30}
31
32// `fastmetrics::metrics::state_set::StateSetValue`
33#[proc_macro_derive(StateSetValue)]
34pub fn derive_state_set_value(input: TokenStream) -> TokenStream {
35    let input = parse_macro_input!(input as DeriveInput);
36    state_set_value::expand_derive_state_set_value(input)
37        .unwrap_or_else(syn::Error::into_compile_error)
38        .into()
39}