use displaydoc::Display;

#[derive(Debug, Display)]
pub enum DataStoreError {
    /// data store disconnected
    Disconnect,
    /// the data for key `{0}` is not available
    Redaction(String),
    /// invalid header (expected {expected:?}, found {found:?})
    InvalidHeader { expected: String, found: String },
    /// unknown data store error
    Unknown,
}

fn main() {
    let disconnect = DataStoreError::Disconnect;
    println!(
        "Enum value `Disconnect` should be printed as:\n\t{}",
        disconnect
    );

    let redaction = DataStoreError::Redaction(String::from("Dummy"));
    println!(
        "Enum value `Redaction` should be printed as:\n\t{}",
        redaction
    );

    let invalid_header = DataStoreError::InvalidHeader {
        expected: String::from("https"),
        found: String::from("http"),
    };
    println!(
        "Enum value `InvalidHeader` should be printed as:\n\t{}",
        invalid_header
    );
}
