# tracing::instrument::Instrument - Rust
API documentation for the Rust `Instrument` trait in crate `tracing`.
Keywords: rust, rustlang, rust-lang, Instrument

# Trait tracing::instrument::Instrument [−] [src]

###

###

    pub trait Instrument: Sized {
        fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T: Future> Future for Instrumented<T>    type Output = T::Output; { ... }
        fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T: Future> Future for Instrumented<T>    type Output = T::Output; { ... }
    }

Attaches spans to a `std::future::Future`.

Extension trait allowing futures to be instrumented with a `tracing` span.

## Provided methods

### `fn instrument(self, span: Span) -> Instrumented<Self>ⓘ

### Notable traits for Instrumented<T>

`impl<T: Future> Future for Instrumented<T> type Output = T::Output;`
` [src]

Instruments this type with the provided `Span`, returning an `Instrumented` wrapper.

The attached `Span` will be entered every time the instrumented `Future` is polled.

# Examples

Instrumenting a future:

    use tracing::Instrument;

    let my_future = async {
        // ...
    };

    my_future
        .instrument(tracing::info_span!("my_future"))
        .await

### `fn in_current_span(self) -> Instrumented<Self>ⓘ

### Notable traits for Instrumented<T>

`impl<T: Future> Future for Instrumented<T> type Output = T::Output;`
` [src]

Instruments this type with the current `Span`, returning an `Instrumented` wrapper.

If the instrumented type is a future, stream, or sink, the attached `Span` will be entered every time it is polled. If the instrumented type is a future executor, every future spawned on that executor will be instrumented by the attached `Span`.

This can be used to propagate the current span when spawning a new future.

# Examples

    use tracing::Instrument;

    let span = tracing::info_span!("my_span");
    let _enter = span.enter();

    // ...

    let future = async {
        tracing::debug!("this event will occur inside `my_span`");
        // ...
    };
    tokio::spawn(future.in_current_span());

Loading content...

## Implementors

### `impl<T: Sized> Instrument for T` [src]

Loading content...