[go: up one dir, main page]

[][src]Struct color_eyre::section::Section

pub struct Section<H, B> { /* fields omitted */ }

An indenteted section with a header for an error report

Details

This helper provides two functions to help with constructing nicely formatted error reports. First, it handles indentation of every line of the body for you, and makes sure it is consistent with the rest of color-eyre's output. Second, it omits outputting the header if the body itself is empty, preventing unnecessary pollution of the report for sections with dynamic content.

Examples

use color_eyre::{SectionExt, Help, Report};
use eyre::eyre;
use std::process::Command;
use tracing::instrument;

trait Output {
    fn output2(&mut self) -> Result<String, Report>;
}

impl Output for Command {
    #[instrument]
    fn output2(&mut self) -> Result<String, Report> {
        let output = self.output()?;

        let stdout = String::from_utf8_lossy(&output.stdout);

        if !output.status.success() {
            let stderr = String::from_utf8_lossy(&output.stderr);
            Err(eyre!("cmd exited with non-zero status code"))
                .with_section(move || stdout.trim().to_string().header("Stdout:"))
                .with_section(move || stderr.trim().to_string().header("Stderr:"))
        } else {
            Ok(stdout.into())
        }
    }
}

Trait Implementations

impl<H, B> Display for Section<H, B> where
    H: Display + Send + Sync + 'static,
    B: Display + Send + Sync + 'static, 
[src]

Auto Trait Implementations

impl<H, B> RefUnwindSafe for Section<H, B> where
    B: RefUnwindSafe,
    H: RefUnwindSafe

impl<H, B> Send for Section<H, B> where
    B: Send,
    H: Send

impl<H, B> Sync for Section<H, B> where
    B: Sync,
    H: Sync

impl<H, B> Unpin for Section<H, B> where
    B: Unpin,
    H: Unpin

impl<H, B> UnwindSafe for Section<H, B> where
    B: UnwindSafe,
    H: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> SectionExt for T where
    T: Display + Send + Sync + 'static, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.