[][src]Function xi_trace::trace_block

pub fn trace_block<'a, S, C>(name: S, categories: C) -> SampleGuard<'a> where
    S: Into<StrCow>,
    C: Into<CategoriesT>, 

Creates a duration sample. The sample is finalized (end_ns set) when the returned value is dropped. trace_closure may be prettier to read.

Performance

See trace_payload for a more complete discussion.

Arguments

  • name - A string that provides some meaningful name to this sample. Usage of static strings is encouraged for best performance to avoid copies. However, anything that can be converted into a Cow string can be passed as an argument.

  • categories - A static array of static strings that tags the samples in some way.

Returns

A guard that when dropped will update the Sample with the timestamp & then record it.

Examples

fn something_expensive() {
}

fn something_else_expensive() {
}

let trace_guard = xi_trace::trace_block("something_expensive", &["rpc", "request"]);
something_expensive();
std::mem::drop(trace_guard); // finalize explicitly if

{
    let _guard = xi_trace::trace_block("something_else_expensive", &["rpc", "response"]);
    something_else_expensive();
}