Skip to main content

roboticus_db/
ext.rs

1use roboticus_core::error::{RoboticusError, Result};
2
3/// Extension trait for converting any Display error into RoboticusError::Database.
4pub trait DbResultExt<T> {
5    fn db_err(self) -> Result<T>;
6}
7
8impl<T, E: std::fmt::Display> DbResultExt<T> for std::result::Result<T, E> {
9    fn db_err(self) -> Result<T> {
10        self.map_err(|e| RoboticusError::Database(e.to_string()))
11    }
12}
13
14#[cfg(test)]
15mod tests {
16    use super::*;
17
18    #[test]
19    fn db_result_ext_converts_error() {
20        let err: std::result::Result<(), &str> = Err("test error");
21        let converted = err.db_err();
22        assert!(converted.is_err());
23        match converted.unwrap_err() {
24            RoboticusError::Database(msg) => assert_eq!(msg, "test error"),
25            other => panic!("Expected Database, got {:?}", other),
26        }
27    }
28}