cs_trace/
tracer.rs

1use core::fmt;
2
3use crate::Span;
4
5// the Tracer trait.
6pub trait Tracer: Send + Sync + fmt::Debug + fmt::Display {
7    fn trace_tree_name(&self) -> &'static str;
8    fn clone_trace(&self) -> Box<dyn Tracer>;
9
10    fn trace(&self, message: &str) -> &dyn Tracer;
11    fn info(&self, message: &str) -> &dyn Tracer;
12    fn debug(&self, message: &str) -> &dyn Tracer;
13    fn warn(&self, message: &str) -> &dyn Tracer;
14    fn error(&self, message: &str) -> &dyn Tracer;
15    
16    fn span(&self) -> &Span;
17}
18
19impl Clone for Box<dyn Tracer> {
20    fn clone(&self) -> Box<dyn Tracer> {
21        return self.clone_trace();
22    }
23}
24
25impl PartialEq for Box<dyn Tracer> {
26    fn eq(&self, other: &Self) -> bool {
27        return self.span() == other.span();
28    }
29}