morethantext/src/error.rs

52 lines
1.1 KiB
Rust
Raw Normal View History

2024-11-15 13:37:11 -05:00
use std::{error::Error, fmt};
#[derive(Debug)]
enum ErrorType {
TableAddFieldDuplicate(String),
}
impl fmt::Display for ErrorType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ErrorType::TableAddFieldDuplicate(data) => write!(f, "field '{}' already exists", data),
}
}
}
#[derive(Debug)]
struct MTTError {
err: ErrorType,
}
impl MTTError {
fn new(err: ErrorType) -> Self {
Self {
err: err,
}
}
}
impl Error for MTTError {}
impl fmt::Display for MTTError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.err.to_string())
}
}
#[cfg(test)]
mod errors {
use super::*;
#[test]
fn get_error() {
let err = MTTError::new(ErrorType::TableAddFieldDuplicate("tester".to_string()));
assert_eq!(err.to_string(), "field 'tester' already exists");
assert!(err.source().is_none());
let err = MTTError::new(ErrorType::TableAddFieldDuplicate("other".to_string()));
assert_eq!(err.to_string(), "field 'other' already exists");
assert!(err.source().is_none());
}
}