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].

crates.io Documentation License

Usage

Add the following to your Cargo.toml: toml slog-unwrap = "0.8"

Next, bring the [ResultExt] and/or [OptionExt] traits into scope, and make use of the new logging methods. ```rust use slog-unwrap::ResultExt;

fn main() { let logger = ...;

let not_great = Result::Err("not terrible");
not_great.unwrap_or_log(&logger); // Logs the failed unwrap to `logger` and panics

} ```

Methods

| std method | slog-unwrap form | trait | |--------------------------------| ----------------------------------------|---------------| | [Result::unwrap()] | [Result::unwrap_or_log(&log)] | [ResultExt] | | [Result::expect(msg)] | [Result::expect_or_log(&log, msg)] | [ResultExt] | | [Result::unwrap_err()] | [Result::unwrap_err_or_log(&log)] | [ResultExt] | | [Result::expect_err(msg)] | [Result::expect_err_or_log(&log, msg)] | [ResultExt] | | [Option::unwrap()] | [Option::unwrap_or_log(&log)] | [OptionExt] | | [Option::expect(msg)] | [Option::expect_or_log(&log, msg)] | [OptionExt] | | [Option::unwrap_none()] | [Option::unwrap_none_or_log(&log)] | [OptionExt] | | [Option::expect_none(msg)] | [Option::expect_none_or_log(&log, msg)] | [OptionExt] |

†: unstable in std
Note: enabling the scope feature drops the &log argument from all methods.

Features

Alternatives

See slog-unwraps, another crate with a similar featureset.