haraldh / chainerror Goto Github PK
View Code? Open in Web Editor NEWsimplified rust error handling
Home Page: https://haraldh.github.io/chainerror/
License: Apache License 2.0
simplified rust error handling
Home Page: https://haraldh.github.io/chainerror/
License: Apache License 2.0
We're packaging the chainerror crate for Fedora Linux as a dependency of varlink-cli, and run tests during the build process. I noticed that doctests have started to fail with Rust 1.71.0 - this is also reproducible by checking out this git repo and just running "cargo test --doc".
The error messages don't make much sense to me, but it looks like the line numbers in the error message are different from the expected ones with Rust 1.71:
Finished test [unoptimized + debuginfo] target(s) in 0.00s
Doc-tests chainerror
running 8 tests
test src/lib.rs - (line 6) ... ok
test src/lib.rs - derive_err_kind (line 745) ... ok
test src/lib.rs - ChainError<T>::find_kind_or_cause (line 233) ... ok
test src/lib.rs - ChainError<T>::find_chain_cause (line 210) ... ok
test src/lib.rs - (line 41) ... FAILED
test src/lib.rs - ChainError<T>::kind (line 262) ... ok
test src/lib.rs - derive_str_context (line 682) ... ok
test src/lib.rs - ChainError<T>::find_cause (line 160) ... ok
failures:
---- src/lib.rs - (line 41) stdout ----
Test executable failed (exit status: 101).
stderr:
Error:
src/lib.rs:17:51: read the config file
Caused by:
src/lib.rs:10:47: Reading file: "foo.txt"
Caused by:
Os { code: 2, kind: NotFound, message: "No such file or directory" }
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `"src/lib.rs:17:51: read the config file\nCaused by:\nsrc/lib.rs:10:47: Reading file: \"foo.txt\"\nCaused by:\nOs { code: 2, kind: NotFound, message: \"No such file or directory\" }\n"`,
right: `"src/lib.rs:16:51: read the config file\nCaused by:\nsrc/lib.rs:9:47: Reading file: \"foo.txt\"\nCaused by:\nOs { code: 2, kind: NotFound, message: \"No such file or directory\" }\n"`', src/lib.rs:25:7
stack backtrace:
0: 0x55751331f3e1 - std::backtrace_rs::backtrace::libunwind::trace::h6aeaf83abc038fe6
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x55751331f3e1 - std::backtrace_rs::backtrace::trace_unsynchronized::h4f9875212db0ad97
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x55751331f3e1 - std::sys_common::backtrace::_print_fmt::h3f820027e9c39d3b
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:65:5
3: 0x55751331f3e1 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hded4932df41373b3
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:44:22
4: 0x55751333b32f - core::fmt::rt::Argument::fmt::hc8ead7746b2406d6
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/fmt/rt.rs:138:9
5: 0x55751333b32f - core::fmt::write::hb1cb56105a082ad9
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/fmt/mod.rs:1094:21
6: 0x55751331d661 - std::io::Write::write_fmt::h797fda7085c97e57
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/io/mod.rs:1713:15
7: 0x55751331f1f5 - std::sys_common::backtrace::_print::h492d3c92d7400346
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:47:5
8: 0x55751331f1f5 - std::sys_common::backtrace::print::hf74aa2eef05af215
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:34:9
9: 0x557513320577 - std::panicking::default_hook::{{closure}}::h8cad394227ea3de8
10: 0x557513320364 - std::panicking::default_hook::h249cc184fec99a8a
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:288:9
11: 0x557513320a2c - std::panicking::rust_panic_with_hook::h82ebcd5d5ed2fad4
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:705:13
12: 0x557513320927 - std::panicking::begin_panic_handler::{{closure}}::h810bed8ecbe66f1a
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:597:13
13: 0x55751331f816 - std::sys_common::backtrace::__rust_end_short_backtrace::h1410008071796261
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/sys_common/backtrace.rs:151:18
14: 0x557513320672 - rust_begin_unwind
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:593:5
15: 0x557513300e93 - core::panicking::panic_fmt::ha0a42a25e0cf258d
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/panicking.rs:67:14
16: 0x5575133010fb - core::panicking::assert_failed_inner::h8de29b2c8e31440f
17: 0x55751330342a - core::panicking::assert_failed::h2d923ab03f7f1dd7
18: 0x557513306a2b - rust_out::main::h5cfeb40e49780147
19: 0x5575133025f3 - core::ops::function::FnOnce::call_once::hffc7fce7ac910f2d
20: 0x5575133019e6 - std::sys_common::backtrace::__rust_begin_short_backtrace::hb65aab94565099a4
21: 0x557513301f49 - std::rt::lang_start::{{closure}}::h6016435505c8a5a2
22: 0x55751331a745 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h5ce27e764c284c0a
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/ops/function.rs:284:13
23: 0x55751331a745 - std::panicking::try::do_call::h4c1fc390ae241991
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:500:40
24: 0x55751331a745 - std::panicking::try::h4d36e7eaed86af72
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:464:19
25: 0x55751331a745 - std::panic::catch_unwind::h41cfb4dd65282b1e
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panic.rs:142:14
26: 0x55751331a745 - std::rt::lang_start_internal::{{closure}}::hfed411c1c5fdb925
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/rt.rs:148:48
27: 0x55751331a745 - std::panicking::try::do_call::h6893f6f32a464342
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:500:40
28: 0x55751331a745 - std::panicking::try::h52b7102f469a0567
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:464:19
29: 0x55751331a745 - std::panic::catch_unwind::h62120054677916b5
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panic.rs:142:14
30: 0x55751331a745 - std::rt::lang_start_internal::hd66bf6b7da144005
at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/rt.rs:148:20
31: 0x557513301f27 - std::rt::lang_start::hf20dd7c855f889aa
32: 0x557513306a95 - main
33: 0x7fae0f877b4a - __libc_start_call_main
34: 0x7fae0f877c0b - __libc_start_main@@GLIBC_2.34
35: 0x5575133014f5 - _start
36: 0x0 - <unknown>
failures:
src/lib.rs - (line 41)
test result: FAILED. 7 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
error: doctest failed, to rerun pass `--doc`
This is one of the nicest crates around error handling. After using error-chain and failure and similar ones not I am thinking of just using std only. This crate is close but is there a way clients of chainerr
write a wrapper such that the dependency on chainerr can be removed easily if a better helper crate comes to existence?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.