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: filter_fn.rs
    path of file: ./repos/tracing/tracing-subscriber/src/filter
    
    the code of the file until where you have to start completion: use crate::{
    filter::LevelFilter,
    subscribe::{Context, Subscribe},
};
use core::{any::type_name, fmt, marker::PhantomData};
use tracing_core::{Collect, Interest, Metadata};

/// A filter implemented by a closure or function pointer that
/// determines whether a given span or event is enabled, based on its
/// [`Metadata`].
///
/// This type can be used for both [per-subscriber filtering][plf] (using its
/// [`Filter`] implementation) and [global filtering][global] (using its
/// [`Subscribe`] implementation).
///
/// See the [documentation on filtering with subscribers][filtering] for details.
///
/// [`Metadata`]: tr
    
    fn is_callsite_enabled(&self, metadata: &'static Metadata<'static>) -> Interest {
        let interest = self
            .register_callsite
            .as_ref()
            .map(|callsite_enabled| callsite_enabled(metadata))
            .unwrap_or_else(|| self.default_callsite_enabled(metadata));
        debug_assert!(
            interest.is_never() || is_below_max_level(&self.max_level_hint, metadata),
            "DynFilterFn<{}, {}> claimed it was only interested in {:?} and below, \
            but it enabled metadata with the {:?} level\nmetadata={:#?}",
            type_name::<F>(),
            type_name::<R>(),
            self.max_level_hint.unwrap(),
            metadata.level(),
            metadata,
        );

        interest
    }