You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: storage_layer.rs
    path of file: ./repos/rust-template/rust/src.axum/tracing_layers
    
    the code of the file until where you have to start completion: //! Storage layer.

use std::{borrow::Cow, collections::HashMap, fmt, time::Instant};
use tracing::{
    field::{Field, Visit},
    span::{Attributes, Record},
    Event, Id, Subscriber,
};
use tracing_subscriber::{layer::Context, registry::LookupSpan, Layer};

/// Storage fields for events.
const ON_EVENT_KEEP_FIELDS: [&
    
    fn on_follows_from(&self, span: &Id, follows: &Id, ctx: Context<'_, S>) {
        let span = ctx.span(span).expect("Span not found");
        let follows_span = ctx.span(follows).expect("Span not found");

        let mut extensions = span.extensions_mut();
        let follows_extensions = follows_span.extensions();

        if let Some((visitor, follows_visitor)) = extensions
            .get_mut::<Storage<'_>>()
            .zip(follows_extensions.get::<Storage<'_>>())
        {
            // insert "follows_from" span name
            visitor
                .values
                .insert(FOLLOWS_FROM_FIELD, Cow::from(follows_span.name()));

            // insert "follows_from" trace_id
            let follows_trace = follows_visitor
                .values
                .get(TRACE_ID)
                .unwrap_or(&Cow::from(format!("{follows:?}")))
                .to_string();
            visitor
                .values
                .insert(FOLLOWS_FROM_TRACE_ID, Cow::from(follows_trace));
        };
    }