use std::error::Error;
use std::fmt;
pub use enum_variant_macros_macros::FromVariants;
pub use enum_variant_macros_macros::TryFromVariants;
#[derive(Debug, PartialEq, Eq)]
pub struct VariantCastError {
pub enum_type: &'static str,
pub exp_type: &'static str,
pub variant_name: &'static str,
}
impl fmt::Display for VariantCastError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"Casting {} to {} failed, variant was {}.",
self.enum_type, self.exp_type, self.variant_name
)
}
}
impl Error for VariantCastError {}
#[doc = include_str!("../README.md")]
#[cfg(doctest)]
pub struct ReadmeDoctests;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn expected_display_string() {
let error = VariantCastError {
enum_type: "Carl",
exp_type: "Fish",
variant_name: "Bread",
};
let displayed = format!("{}", error);
assert_eq!("Casting Carl to Fish failed, variant was Bread.", displayed);
}
}