1use crate::effector::EffectorID;
2use crate::neuron::NeuronID;
3use crate::sensor::SensorID;
4use std::io::Error as IoError;
5use std::result::Result as StdResult;
6
7#[derive(Debug)]
8pub enum Error {
9 Simple(SimpleError),
10 NeuronDoesNotExists(NeuronID),
11 BindingNeuronToItSelf(NeuronID),
12 UnbindingNeuronFromItSelf(NeuronID),
13 SensorDoesNotExists(SensorID),
14 EffectorDoesNotExists(EffectorID),
15 BindingNeuronToSensor(NeuronID, SensorID),
16 BindingEffectorToNeuron(EffectorID, NeuronID),
17 NeuronIsAlreadyConnectedToSensor(NeuronID, SensorID),
18 NeuronIsAlreadyConnectedToEffector(NeuronID, EffectorID),
19}
20
21impl Error {
22 #[inline]
23 pub fn simple(message: String) -> Self {
24 Error::Simple(SimpleError { message })
25 }
26}
27
28#[derive(Debug)]
29pub struct SimpleError {
30 pub message: String,
31}
32
33pub type Result<T> = StdResult<T, Error>;
34
35impl From<IoError> for Error {
36 fn from(error: IoError) -> Self {
37 Self::simple(format!("{}", error))
38 }
39}