error2/
lib.rs

1#![cfg_attr(docsrs, feature(doc_cfg))]
2
3mod attach;
4mod backtrace;
5mod boxed;
6mod context;
7mod error2;
8mod extract;
9#[cfg_attr(docsrs, doc(cfg(feature = "future")))]
10#[cfg(feature = "future")]
11mod future;
12mod iter;
13mod location;
14mod macros;
15mod root_error;
16mod str_id;
17#[cfg_attr(docsrs, doc(cfg(feature = "stream")))]
18#[cfg(feature = "stream")]
19mod stream;
20mod transform;
21
22#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
23#[cfg(feature = "derive")]
24pub use ::error2_derive::Error2;
25
26#[cfg_attr(docsrs, doc(cfg(feature = "future")))]
27#[cfg(feature = "future")]
28pub use self::future::AttachFuture;
29#[cfg_attr(docsrs, doc(cfg(feature = "stream")))]
30#[cfg(feature = "stream")]
31pub use self::stream::AttachStream;
32pub use self::{
33    attach::Attach,
34    backtrace::Backtrace,
35    boxed::{BoxedError2, ErrorKind, ViaErr2, ViaRoot, ViaStd},
36    context::Context,
37    error2::Error2,
38    iter::AttachIter,
39    location::Location,
40    root_error::RootError,
41    transform::{MiddleToTarget, SourceToTarget},
42};
43pub(crate) use self::{backtrace::BakctraceEntry, extract::extract_error_message, str_id::StrId};
44
45pub(crate) mod private {
46    #[derive(Debug, Clone, Copy)]
47    pub enum ViaPartial {}
48
49    #[derive(Debug, Clone, Copy)]
50    pub enum ViaFull {}
51}
52
53#[doc(hidden)]
54pub fn push_error<E: Error2 + ?Sized>(error: &mut E, location: Location) {
55    let display = error.to_string();
56    let backtrace = error.backtrace_mut();
57    let type_name = core::any::type_name::<E>();
58
59    backtrace.push_error(type_name, display, location);
60}