Skip to main content

apollo_opentelemetry_macros/
lib.rs

1//! Macros for the `apollo-opentelemetry` crate.
2//! See `apollo-opentelemetry` crate for documentation.
3#![doc(hidden)]
4#![forbid(unsafe_code)]
5
6use proc_macro::TokenStream;
7
8mod span;
9mod traced;
10
11#[proc_macro_attribute]
12pub fn traced(attr: TokenStream, item: TokenStream) -> TokenStream {
13    traced::expand(attr.into(), item.into())
14        .unwrap_or_else(|e| e.to_compile_error())
15        .into()
16}
17
18/// Creates a new span using OpenTelemetry.
19///
20/// See `apollo_opentelemetry::span!` for full documentation.
21#[proc_macro]
22pub fn span(input: TokenStream) -> TokenStream {
23    span::expand(input.into())
24        .unwrap_or_else(|e| e.to_compile_error())
25        .into()
26}