hotl-types 0.1.1

Core config, observation model, and surface trait for hotl.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::observation::{AgentObservation, Source};
use std::fmt;

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SurfaceError(pub String);

impl fmt::Display for SurfaceError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{}", self.0)
    }
}
impl std::error::Error for SurfaceError {}

pub trait Surface {
    fn observe(&self) -> Result<Vec<AgentObservation>, SurfaceError>;
    fn focus(&self, obs: &AgentObservation) -> Result<(), SurfaceError>;
    fn source(&self) -> Source;
}