actix-telepathy 0.7.0

Cluster extension for the actix actor framework
Documentation
use crate::prelude::*;
use actix::prelude::*;
use serde::{Deserialize, Serialize};
use std::marker::PhantomData;

#[derive(Serialize, Deserialize, RemoteMessage)]
struct MyRemoteMessage<T: Serialize + Send> {
    value: T,
}

type MyFloatMessage = MyRemoteMessage<f32>;

#[derive(RemoteActor)]
#[remote_messages(MyFloatMessage)]
struct MyRemoteActor<T: Send + Unpin + 'static + Sized> {
    phantom: PhantomData<T>,
}

impl<T: Sized + Unpin + 'static + Send> Actor for MyRemoteActor<T> {
    type Context = Context<Self>;
}

impl<T: Send + Unpin + 'static> Handler<MyFloatMessage> for MyRemoteActor<T> {
    type Result = ();

    fn handle(&mut self, msg: MyFloatMessage, _ctx: &mut Self::Context) -> Self::Result {
        let _r = msg.value + 1.0;
    }
}

#[actix_rt::test]
async fn generic_remote_messages() {
    let addr: Addr<MyRemoteActor<f32>> = MyRemoteActor {
        phantom: PhantomData,
    }
    .start();
    addr.do_send(MyRemoteMessage { value: 4.2 });
}