tracing_subscriber/field/
debug.rs1use super::{MakeVisitor, VisitFmt, VisitOutput};
3use tracing_core::field::{Field, Visit};
4
5use core::fmt;
6
7#[derive(Debug, Clone)]
10pub struct Alt<V>(V);
11
12impl<V> Alt<V> {
18 pub fn new(inner: V) -> Self {
21 Alt(inner)
22 }
23}
24
25impl<T, V> MakeVisitor<T> for Alt<V>
26where
27 V: MakeVisitor<T>,
28{
29 type Visitor = Alt<V::Visitor>;
30
31 #[inline]
32 fn make_visitor(&self, target: T) -> Self::Visitor {
33 Alt(self.0.make_visitor(target))
34 }
35}
36
37impl<V> Visit for Alt<V>
38where
39 V: Visit,
40{
41 #[inline]
42 fn record_f64(&mut self, field: &Field, value: f64) {
43 self.0.record_f64(field, value)
44 }
45
46 #[inline]
47 fn record_i64(&mut self, field: &Field, value: i64) {
48 self.0.record_i64(field, value)
49 }
50
51 #[inline]
52 fn record_u64(&mut self, field: &Field, value: u64) {
53 self.0.record_u64(field, value)
54 }
55
56 #[inline]
57 fn record_bool(&mut self, field: &Field, value: bool) {
58 self.0.record_bool(field, value)
59 }
60
61 fn record_str(&mut self, field: &Field, value: &str) {
63 self.0.record_str(field, value)
64 }
65
66 #[inline]
72 fn record_debug(&mut self, field: &Field, value: &dyn fmt::Debug) {
73 self.0.record_debug(field, &format_args!("{:#?}", value))
74 }
75}
76
77impl<V, O> VisitOutput<O> for Alt<V>
78where
79 V: VisitOutput<O>,
80{
81 #[inline]
82 fn finish(self) -> O {
83 self.0.finish()
84 }
85}
86
87feature! {
88 #![feature = "std"]
89 use super::VisitWrite;
90 use std::io;
91
92 impl<V> VisitWrite for Alt<V>
93 where
94 V: VisitWrite,
95 {
96 #[inline]
97 fn writer(&mut self) -> &mut dyn io::Write {
98 self.0.writer()
99 }
100 }
101}
102
103impl<V> VisitFmt for Alt<V>
104where
105 V: VisitFmt,
106{
107 #[inline]
108 fn writer(&mut self) -> &mut dyn fmt::Write {
109 self.0.writer()
110 }
111}