1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
use crate::Span;

// the Tracer trait
pub trait Tracer: Send + Sync {
    fn trace_tree_name(&self) -> &'static str;
    fn is_silent(&self) -> bool;
    fn as_silent(self, is_silent: bool) -> Box<dyn Tracer>;

    fn trace(&self, message: &str) -> &dyn Tracer;
    fn info(&self, message: &str) -> &dyn Tracer;
    fn debug(&self, message: &str) -> &dyn Tracer;
    fn warn(&self, message: &str) -> &dyn Tracer;
    fn error(&self, message: &str) -> &dyn Tracer;
    
    fn span(&self) -> &Span;
}