7 stable releases
3.1.1 | Sep 21, 2021 |
---|---|
3.0.0 | Sep 6, 2021 |
2.0.0 | Jul 19, 2021 |
1.1.0 | May 12, 2021 |
1.0.0 | Mar 23, 2020 |
#104 in Debugging
1,121 downloads per month
Used in 2 crates
18KB
283 lines
skip_error
skip_error
provides a single macro to help ignoring Error
that would happen
in a loop. See documentation to know more.
Rust version requirement
skip_error
3.0.0 requires Rustc version 1.54 or greater.
lib.rs
:
This crate provides a single macro to help skipping a error in a loop, possibly logging it.
For example, imagine you have some code like this.
for string_number in &["1", "2", "three", "4"] {
let number: u32 = match string_number.parse() {
Ok(n) => n,
Err(e) => continue,
};
}
Then you can use the macro [skip_error!
] to write like this.
# #[macro_use]
# extern crate skip_error;
# fn main() {
for string_number in &["1", "2", "three", "4"] {
let number: u32 = skip_error!(string_number.parse());
}
# }
Or even better, use the trait [SkipError
] that extends [Iterator
] and do
the following (essentially equivalent to [Iterator::flatten()
] but see
below for logging abilities).
# #[macro_use]
# extern crate skip_error;
use skip_error::SkipError;
# fn main() {
let numbers: Vec<u32> = ["1", "2", "three", "4"]
.into_iter()
.map(|string_number| string_number.parse())
.skip_error()
.collect();
# }
Features
log
: emit log message with the standardstd::log
macro. Disabled by default.tracing
: emit traces with thetracing::trace
macro. Disabled by default. If bothlog
andtracing
are enabled, thenlog
will be ignored sincetracing
is configured in a compatibility mode with standardlog
.
Dependencies
~105KB