#[derive(Debug)]
#[non_exhaustive]
pub enum MessageError<T> {
StateIsNotActive(T),
}
pub mod __protected {
use crate::message::MessageError;
use crate::__protected::StateMachine;
use crate::{ReturnMessage, ReceiveMessage, State};
pub trait PushMessage<TargetState, Message>: StateMachine
where TargetState: State + ReceiveMessage<Message>
{
fn push_message(&mut self, message: Message) -> Result<(), MessageError<Message>>;
}
pub trait PollMessage<TargetState, Message>: StateMachine
where TargetState: State + ReturnMessage<Message>
{
fn poll_message(&mut self) -> Result<Option<Message>, MessageError<()>>;
}
}
pub trait ReceiveMessage<Message> {
fn receive_message(&mut self, message: Message);
}
pub trait ReturnMessage<Message> {
fn return_message(&mut self) -> Option<Message>;
}