[−][src]Crate slog_unwrap
This crate provides .unwrap_or_log() and .expect_or_log() methods on Result and Option types that log failed unwraps to a slog::Logger. This is useful when, for example, you have a syslog drain or a database drain, and you want your unwrap failures to show up there instead of being printed to stderr.
Its API aims to mirror Rust's std — see all the supported methods below. Failed unwraps are logged at a level of Critical.
Usage
Add the following to your Cargo.toml:
slog-unwrap = "0.9"
Next, bring the ResultExt and/or OptionExt traits into scope, and make use of the new logging methods.
use slog_unwrap::ResultExt; let logger = slog::Logger::root(slog::Discard, slog::o!()); let not_great: Result<(), _> = Result::Err("not terrible"); // Logs the failed unwrap to `logger` and panics not_great.unwrap_or_log(&logger);
Methods
†: unstable in std
Note: enabling the scope feature drops the &log argument from all methods.
Features
panic-quiet: causes failed unwraps to panic with an empty message.
This feature is enabled by default — if you'd like the unwrap error message to also show in the panic message, disable default features in yourCargo.tomlas follows:
slog-unwrap = { version = "0.9", default-features = false }scope: adds support forslog-scope, which removes the need to pass aslog::Loggerto the various methods.
Alternatives
See slog-unwraps, another crate with a similar featureset.
Traits
| OptionExt | Extension trait for Option types. |
| ResultExt | Extension trait for Result types. |