[][src]Crate indenter

A wrapper for the fmt::Write objects that efficiently appends indentation after every newline

Setup

Add this to your Cargo.toml:

[dependencies]
indenter = "0.2"

Example

use std::error::Error;
use core::fmt::{self, Write};
use indenter::indented;

struct ErrorReporter<'a>(&'a dyn Error);

impl fmt::Debug for ErrorReporter<'_> {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let mut source = Some(self.0);
        let mut i = 0;

        while let Some(error) = source {
            writeln!(f)?;
            write!(indented(f).ind(i), "{}", error)?;

            source = error.source();
            i += 1;
        }

        Ok(())
    }
}

Structs

Indented

Helper struct for efficiently indenting multi line display implementations

Enums

Format

The set of supported formats for indentation

Functions

indented

Helper function for creating a default indenter

Type Definitions

Inserter

A callback for Format::Custom used to insert indenation after a new line