52 lines
1.1 KiB
Rust
52 lines
1.1 KiB
Rust
|
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());
|
||
|
}
|
||
|
}
|
||
|
|