Trait GenServer

Source
pub trait GenServer
where Self: Default + Send + Sized,
{ type CallMsg: Clone + Send + Sized; type CastMsg: Clone + Send + Sized; type OutMsg: Send + Sized; type State: Clone + Send; type Error: Debug; // Provided methods fn new() -> Self { ... } fn start(initial_state: Self::State) -> GenServerHandle<Self> { ... } fn start_blocking(initial_state: Self::State) -> GenServerHandle<Self> { ... } fn run( &mut self, handle: &GenServerHandle<Self>, rx: &mut Receiver<GenServerInMsg<Self>>, state: Self::State, ) -> Result<(), GenServerError> { ... } fn init( &mut self, _handle: &GenServerHandle<Self>, state: Self::State, ) -> Result<Self::State, Self::Error> { ... } fn main_loop( &mut self, handle: &GenServerHandle<Self>, rx: &mut Receiver<GenServerInMsg<Self>>, state: Self::State, ) -> Result<(), GenServerError> { ... } fn receive( &mut self, handle: &GenServerHandle<Self>, rx: &mut Receiver<GenServerInMsg<Self>>, state: Self::State, ) -> Result<(Self::State, bool), GenServerError> { ... } fn handle_call( &mut self, _message: Self::CallMsg, _handle: &GenServerHandle<Self>, _state: Self::State, ) -> CallResponse<Self> { ... } fn handle_cast( &mut self, _message: Self::CastMsg, _handle: &GenServerHandle<Self>, _state: Self::State, ) -> CastResponse<Self> { ... } }

Required Associated Types§

Provided Methods§

Source

fn new() -> Self

Source

fn start(initial_state: Self::State) -> GenServerHandle<Self>

Source

fn start_blocking(initial_state: Self::State) -> GenServerHandle<Self>

We copy the same interface as tasks, but all threads can work while blocking by default

Source

fn run( &mut self, handle: &GenServerHandle<Self>, rx: &mut Receiver<GenServerInMsg<Self>>, state: Self::State, ) -> Result<(), GenServerError>

Source

fn init( &mut self, _handle: &GenServerHandle<Self>, state: Self::State, ) -> Result<Self::State, Self::Error>

Initialization function. It’s called before main loop. It can be overrided on implementations in case initial steps are required.

Source

fn main_loop( &mut self, handle: &GenServerHandle<Self>, rx: &mut Receiver<GenServerInMsg<Self>>, state: Self::State, ) -> Result<(), GenServerError>

Source

fn receive( &mut self, handle: &GenServerHandle<Self>, rx: &mut Receiver<GenServerInMsg<Self>>, state: Self::State, ) -> Result<(Self::State, bool), GenServerError>

Source

fn handle_call( &mut self, _message: Self::CallMsg, _handle: &GenServerHandle<Self>, _state: Self::State, ) -> CallResponse<Self>

Source

fn handle_cast( &mut self, _message: Self::CastMsg, _handle: &GenServerHandle<Self>, _state: Self::State, ) -> CastResponse<Self>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§