@@ -97,7 +97,7 @@ pub struct Context {
9797 #[ cfg( feature = "trace" ) ]
9898 pub ( crate ) span : Option < Arc < SynchronizedSpan > > ,
9999 entries : Option < Arc < EntryMap > > ,
100- suppress_telemetry : bool ,
100+ flags : ContextFlags ,
101101}
102102
103103type EntryMap = HashMap < TypeId , Arc < dyn Any + Sync + Send > , BuildHasherDefault < IdHasher > > ;
@@ -245,7 +245,7 @@ impl Context {
245245 entries,
246246 #[ cfg( feature = "trace" ) ]
247247 span : self . span . clone ( ) ,
248- suppress_telemetry : self . suppress_telemetry ,
248+ flags : self . flags ,
249249 }
250250 }
251251
@@ -335,7 +335,7 @@ impl Context {
335335 /// Returns whether telemetry is suppressed in this context.
336336 #[ inline]
337337 pub fn is_telemetry_suppressed ( & self ) -> bool {
338- self . suppress_telemetry
338+ self . flags . is_telemetry_suppressed ( )
339339 }
340340
341341 /// Returns a new context with telemetry suppression enabled.
@@ -344,7 +344,7 @@ impl Context {
344344 entries : self . entries . clone ( ) ,
345345 #[ cfg( feature = "trace" ) ]
346346 span : self . span . clone ( ) ,
347- suppress_telemetry : true ,
347+ flags : self . flags . with_telemetry_suppressed ( ) ,
348348 }
349349 }
350350
@@ -413,7 +413,7 @@ impl Context {
413413 Self :: map_current ( |cx| Context {
414414 span : Some ( Arc :: new ( value) ) ,
415415 entries : cx. entries . clone ( ) ,
416- suppress_telemetry : cx. suppress_telemetry ,
416+ flags : cx. flags ,
417417 } )
418418 }
419419
@@ -422,7 +422,7 @@ impl Context {
422422 Context {
423423 span : Some ( Arc :: new ( value) ) ,
424424 entries : self . entries . clone ( ) ,
425- suppress_telemetry : self . suppress_telemetry ,
425+ flags : self . flags ,
426426 }
427427 }
428428}
@@ -446,7 +446,7 @@ impl fmt::Debug for Context {
446446 let entries = self . entries . as_ref ( ) . map_or ( 0 , |e| e. len ( ) ) ;
447447
448448 dbg. field ( "entries count" , & entries)
449- . field ( "suppress_telemetry" , & self . suppress_telemetry )
449+ . field ( "suppress_telemetry" , & self . flags . is_telemetry_suppressed ( ) )
450450 . finish ( )
451451 }
452452}
@@ -605,6 +605,23 @@ impl Default for ContextStack {
605605 }
606606}
607607
608+ #[ derive( Clone , Copy , Default ) ]
609+ struct ContextFlags ( usize ) ;
610+
611+ impl ContextFlags {
612+ const TELEMETRY_SUPPRESSED : usize = 1 ;
613+
614+ #[ inline( always) ]
615+ fn is_telemetry_suppressed ( & self ) -> bool {
616+ self . 0 & Self :: TELEMETRY_SUPPRESSED != 0
617+ }
618+
619+ #[ inline( always) ]
620+ fn with_telemetry_suppressed ( & self ) -> Self {
621+ Self ( self . 0 | Self :: TELEMETRY_SUPPRESSED )
622+ }
623+ }
624+
608625#[ cfg( test) ]
609626mod tests {
610627 use super :: * ;
0 commit comments