#diagnostics #verbose #error-message #standard-error #output-stream #stdout

config-diag

Provide a .diag() function for diagnostic output if requested

3 stable releases

1.0.2 Sep 1, 2022
1.0.1 Sep 1, 2021
1.0.0 Jun 21, 2021

#381 in Configuration

BSD-2-Clause

10KB
106 lines

config-diag -- provide a .diag() function for diagnostic output if requested

The ConfigDiag trait may be used to decorate an object that stores some kind of configuration information. It adds a diag method that checks whether verbose output has been requested and, if so, displays a message to the standard error stream. If the diag_to_stderr method is overridden and it returns false, any diagnostic messages selected for display are sent to the standard output stream instead.

Example:

use std::error;

use config_diag::ConfigDiag;

struct Config {
    verbose: bool,
}

impl ConfigDiag for Config {
    fn diag_is_verbose(&self) -> bool {
        self.verbose
    }
}

pub fn main() -> Result<(), Box<dyn error::Error>> {
    let config = Config { verbose: true };
    let event = 42;
    config.diag(|| format!("Something happened: {}", event));
    config.diag_("Got here!");
    Ok(())
}

lib.rs:

Provide a .diag() function for diagnostic output if requested.

The ConfigDiag trait may be used to decorate an object that stores some kind of configuration information. It adds a diag method that checks whether verbose output has been requested and, if so, displays a message to the standard error stream. If the diag_to_stderr method is overridden and it returns false, any diagnostic messages selected for display are sent to the standard output stream instead.

Example:

#
use config_diag::ConfigDiag;

struct Config {
    verbose: bool,
}

impl ConfigDiag for Config {
    fn diag_is_verbose(&self) -> bool {
        self.verbose
    }
}

let config = Config { verbose: true };
config.diag(|| format!("Something happened: {}", event));
config.diag_("Got here!");

No runtime deps