Composable logging with monoids and contravariant functors.
A logger is a routine that takes input and has side-effects. Any routine that has the appropriate type will do. A logger can be seen as the opposite or dual of an infinite iterator.
The core trait of this crate is Logger. It has only a single method that must be implemented: log. To log something, pass it to this method. It is up to the logger to decide what to do with the value.
Loggers are composable: given two loggers with compatible types, a new logger can be created that forwards its input to both loggers.
Returned from the Logger::chain method.
Returned from the empty function.
Returned from the extender function.
Returned from the Logger::filter method.
Returned from the Logger::map method.
Returned from the Logger::safe method.
A logger is a routine that takes input and has side-effects.
A logger that ignores all input.
A logger that collects values into a container.