[−][src]Function xi_trace::trace_closure
pub fn trace_closure<S, C, F, R>(name: S, categories: C, closure: F) -> R where
S: Into<StrCow>,
C: Into<CategoriesT>,
F: FnOnce() -> R,
Creates a duration sample that measures how long the closure took to execute.
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
The result of the closure.
Examples
fn something_expensive() -> u32 { 0 } fn something_else_expensive(value: u32) { } let result = xi_trace::trace_closure("something_expensive", &["rpc", "request"], || { something_expensive() }); xi_trace::trace_closure("something_else_expensive", &["rpc", "response"], || { something_else_expensive(result); });