pub trait MakeWriter<'a> {
type Writer: Write;
// Required method
fn make_writer(&'a self) -> Self::Writer;
// Provided methods
fn enabled(&self, meta: &Metadata<'_>) -> bool { ... }
fn make_writer_for(&'a self, meta: &Metadata<'_>) -> Option<Self::Writer> { ... }
fn line_len(&self) -> usize { ... }
}
Expand description
A type that can create fmt::Write
instances.
This trait is already implemented for function pointers and
immutably-borrowing closures that return an instance of fmt::Write
,
Additionally, it is implemented for maitake::sync::blocking::Mutex
when the type inside the mutex implements fmt::Write
and the Lock
type
implements [RawMutex
].
The MakeWriter::make_writer_for
method takes Metadata
describing a
span or event and returns a writer. MakeWriter
s can optionally provide
implementations of this method with behaviors that differ based on the span
or event being written. For example, events at different levels might be
written to different output streams, or data from different targets might
be written to separate log files. When the MakeWriter
has no custom
behavior based on metadata, the default implementation of make_writer_for
simply calls self.make_writer()
, ignoring the metadata. Therefore, when
metadata is available, callers should prefer to call make_writer_for
,
passing in that metadata, so that the MakeWriter
implementation can choose
the appropriate behavior.
Required Associated Types§
Sourcetype Writer: Write
type Writer: Write
The concrete fmt::Write
implementation returned by make_writer
.
Required Methods§
Sourcefn make_writer(&'a self) -> Self::Writer
fn make_writer(&'a self) -> Self::Writer
Returns an instance of Writer
.
§Implementer notes
A Subscriber
will call this method each time an event is recorded.
Ensure any state that must be saved across writes is not lost when the
Writer
instance is dropped. If creating a fmt::Write
instance is
expensive, be sure to cache it when implementing MakeWriter
to
improve performance.
Provided Methods§
fn enabled(&self, meta: &Metadata<'_>) -> bool
Sourcefn make_writer_for(&'a self, meta: &Metadata<'_>) -> Option<Self::Writer>
fn make_writer_for(&'a self, meta: &Metadata<'_>) -> Option<Self::Writer>
Returns a Writer
for writing data from the span or event described
by the provided Metadata
.
By default, this calls self.make_writer()
, ignoring
the provided metadata, but implementations can override this to provide
metadata-specific behaviors.
This method allows MakeWriter
implementations to implement different
behaviors based on the span or event being written. The MakeWriter
type might return different writers based on the provided metadata, or
might write some values to the writer before or after providing it to
the caller.
fn line_len(&self) -> usize
Implementations on Foreign Types§
Source§impl<'a, M> MakeWriter<'a> for Option<M>where
M: MakeWriter<'a>,
impl<'a, M> MakeWriter<'a> for Option<M>where
M: MakeWriter<'a>,
Source§impl<'a, W, Lock> MakeWriter<'a> for Mutex<W, Lock>where
W: Write + 'a,
Lock: RawMutex + 'a,
impl<'a, W, Lock> MakeWriter<'a> for Mutex<W, Lock>where
W: Write + 'a,
Lock: RawMutex + 'a,
type Writer = MutexGuardWriter<'a, W, Lock>
fn make_writer(&'a self) -> Self::Writer
Implementors§
Source§impl<'a, A, B> MakeWriter<'a> for OrElse<A, B>where
A: MakeWriter<'a>,
B: MakeWriter<'a>,
impl<'a, A, B> MakeWriter<'a> for OrElse<A, B>where
A: MakeWriter<'a>,
B: MakeWriter<'a>,
type Writer = EitherWriter<<A as MakeWriter<'a>>::Writer, <B as MakeWriter<'a>>::Writer>
Source§impl<'a, D> MakeWriter<'a> for MakeTextWriter<D>where
D: Draw + 'a,
Available on crate feature embedded-graphics
only.
impl<'a, D> MakeWriter<'a> for MakeTextWriter<D>where
D: Draw + 'a,
embedded-graphics
only.