use std::fmt;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("{0}")]
Message(String),
#[error(transparent)]
Io(#[from] std::io::Error),
}
impl Error {
pub fn msg(s: impl fmt::Display) -> Self {
Self::Message(s.to_string())
}
}
pub type Result<T> = std::result::Result<T, Error>;
#[cfg(test)]
mod tests {
use super::*;
use runi_test::prelude::*;
use runi_test::pretty_assertions::assert_eq;
#[rstest]
#[case("something went wrong")]
#[case("another error")]
fn error_from_string(#[case] msg: &str) {
let e = Error::msg(msg);
assert_eq!(e.to_string(), msg);
}
#[test]
fn result_with_error() {
let r: Result<()> = Err(Error::msg("fail"));
assert!(r.is_err());
}
}