Код IT Загрузка примера кода…

Rust main.rs
trait Database {
    fn query(&self, sql: &str) -> Result<Vec<Row>, DbError>;
}

struct RealDatabase { /* ... */ }
impl Database for RealDatabase { /* ... */ }

#[cfg(test)]
struct MockDatabase {
    responses: HashMap<String, Result<Vec<Row>, DbError>>,
}

#[cfg(test)]
impl Database for MockDatabase {
    fn query(&self, sql: &str) -> Result<Vec<Row>, DbError> {
        self.responses.get(sql).cloned().unwrap_or_else(|| 
            Err(DbError::QueryFailed)
        )
    }
}
trait Database {
    fn query(&self, sql: &str) -> Result<Vec<Row>, DbError>;
}

struct RealDatabase { /* ... */ }
impl Database for RealDatabase { /* ... */ }

#[cfg(test)]
struct MockDatabase {
    responses: HashMap<String, Result<Vec<Row>, DbError>>,
}

#[cfg(test)]
impl Database for MockDatabase {
    fn query(&self, sql: &str) -> Result<Vec<Row>, DbError> {
        self.responses.get(sql).cloned().unwrap_or_else(|| 
            Err(DbError::QueryFailed)
        )
    }
}