vise_macros/
lib.rs

1//! Procedural macros for the `vise` metrics client.
2//!
3//! All macros in this crate are re-exported from the [`vise`] crate. See its docs for more details
4//! and the examples of usage.
5//!
6//! [`vise`]: https://docs.rs/vise/
7
8// Documentation settings.
9#![doc(html_root_url = "https://docs.rs/vise-macros/0.3.2")]
10// General settings.
11#![recursion_limit = "128"]
12// Linter settings.
13#![warn(missing_debug_implementations, bare_trait_objects)]
14#![warn(clippy::all, clippy::pedantic)]
15#![allow(clippy::must_use_candidate, clippy::module_name_repetitions)]
16
17extern crate proc_macro;
18
19use proc_macro::TokenStream;
20
21mod labels;
22mod metrics;
23mod register;
24mod utils;
25
26#[proc_macro_derive(Metrics, attributes(metrics))]
27pub fn metrics(input: TokenStream) -> TokenStream {
28    metrics::impl_metrics(input)
29}
30
31#[proc_macro_derive(EncodeLabelValue, attributes(metrics))]
32pub fn encode_label_value(input: TokenStream) -> TokenStream {
33    labels::impl_encode_label_value(input)
34}
35
36#[proc_macro_derive(EncodeLabelSet, attributes(metrics))]
37pub fn encode_label_set(input: TokenStream) -> TokenStream {
38    labels::impl_encode_label_set(input)
39}
40
41#[proc_macro_attribute]
42pub fn register(_attrs: TokenStream, input: TokenStream) -> TokenStream {
43    register::impl_register(input)
44}