derail_report/
lib.rs

1#![doc = env!("CARGO_PKG_DESCRIPTION")]
2#![doc = "\n\n"]
3//! These functions operate on iterators of [`Error`]s. To report a single
4//! [`Error`], make use of [`core::iter::once`].
5//!
6//! [`Error`]: derail::Error
7//! [`Display`]: core::fmt::Display
8#![doc = "[`derail-report`](crate) is `#![no_std]`-compatible, though it "]
9#![doc = "depends on"]
10#![cfg_attr(feature = "alloc", doc = " [`alloc`] ")]
11#![cfg_attr(not(feature = "alloc"), doc = " `alloc` ")]
12#![doc = "by default. Disable the `alloc` feature if this is undesirable."]
13#![no_std]
14
15#[cfg(feature = "alloc")]
16extern crate alloc;
17
18/// Attempt a fallible operation, storing the result and breaking on error.
19macro_rules! attempt {
20    ($e:expr, $result:expr $(,)?) => {
21        $result = $e;
22        if $result.is_err() {
23            return ControlFlow::Break(());
24        }
25    };
26}
27
28mod buffer;
29mod multiline;
30mod oneline;
31mod sealed;
32
33#[cfg(feature = "alloc")]
34#[doc(hidden)]
35pub use buffer::Heap;
36#[cfg(feature = "alloc")]
37pub use buffer::HeapFactory;
38#[doc(hidden)]
39pub use buffer::Stack;
40pub use buffer::{BufferFactory, StackFactory};
41pub use multiline::display as multiline;
42pub use oneline::display as oneline;