1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
//! # Acteur Actor System //! //! An actor system written in Rust that just works. Simple, robust, fast, documented. //! //! ## Overall features of Acteur //! //! ## Example //! //! ```rust,no_run //! use acteur::{Actor, Handle, Assistant, Acteur}; //! use async_trait::async_trait; //! //! #[derive(Debug)] //! struct Employee { //! salary: u32 //! } //! //! #[async_trait] //! impl Actor for Employee { //! type Id = u32; //! //! async fn activate(_: Self::Id) -> Self { //! Employee { //! salary: 0 // Load from DB or set a default, //! } //! } //! } //! //! #[derive(Debug)] //! struct SalaryChanged(u32); //! //! #[async_trait] //! impl Handle<SalaryChanged> for Employee { //! async fn handle(&mut self, message: SalaryChanged, _: &Assistant<Employee>) { //! self.salary = message.0; //! } //! } //! //! # fn main() { //! let sys = Acteur::new(); //! //! sys.send_sync::<Employee, SalaryChanged>(42, SalaryChanged(55000)); //! //! sys.wait_until_stopped(); //! # } //! //! ``` //! #![deny(unsafe_code)] mod actor; mod actor_proxy; mod actors_manager; mod system_director; mod assistant; mod envelope; mod facade; mod handle; pub use actor::Actor; pub use assistant::Assistant; pub use facade::Acteur; pub use handle::Handle;