diff --git a/tracy-client/src/lib.rs b/tracy-client/src/lib.rs index fc779c8..f6066f5 100644 --- a/tracy-client/src/lib.rs +++ b/tracy-client/src/lib.rs @@ -19,6 +19,27 @@ use std::alloc; use std::ffi::CString; use tracy_client_sys as sys; +/// Start a new Tracy span with function, file, and line determined automatically. +#[macro_export] +macro_rules! span { + ($name:expr, $callstack_depth:expr) => {{ + fn f() {} + fn type_name_of(_: T) -> &'static str { + std::any::type_name::() + } + let func_name = type_name_of(f); + let function = &func_name[..func_name.len() - 3]; + + tracy_client::Span::new( + $name, + function, + file!(), + line!(), + $callstack_depth, + ) + }}; +} + /// A handle representing a span of execution. #[cfg(feature="enable")] pub struct Span(