use crate::payload::Violation;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Contract {
InvalidValue(Violation),
PreconditionFailed,
ContractBroken,
UnknownInteraction,
}
#[non_exhaustive]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Transport {
Timeout,
Undelivered,
Down,
Corrupt,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum CallError {
Contract(Contract),
Transport(Transport),
}
#[cfg(test)]
mod tests {
use super::{CallError, Contract, Transport};
fn owns_nothing<T: Copy + Eq + core::fmt::Debug + 'static>() {}
#[test]
fn every_error_is_copy_and_owns_nothing() {
owns_nothing::<Contract>();
owns_nothing::<Transport>();
owns_nothing::<CallError>();
}
}