#![deny(rust_2018_idioms, nonstandard_style, future_incompatible)]
#![doc(html_logo_url = "https://actix.rs/img/logo.png")]
#![doc(html_favicon_url = "https://actix.rs/favicon.ico")]
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#[cfg(doctest)]
doc_comment::doctest!("../README.md");
mod actor;
mod address;
mod context;
mod context_impl;
mod context_items;
mod handler;
mod mailbox;
mod stream;
mod supervisor;
pub mod actors;
pub mod clock;
pub mod fut;
pub mod io;
pub mod registry;
pub mod sync;
pub mod utils;
#[cfg(feature = "macros")]
pub use actix_derive::{main, test, Message, MessageResponse};
pub use actix_rt::{spawn, Arbiter, ArbiterHandle, System, SystemRunner};
#[doc(hidden)]
pub mod __private {
#[cfg(feature = "macros")]
pub use actix_macros::{main, test};
}
#[doc(hidden)]
pub use crate::context::ContextFutureSpawner;
pub use crate::{
actor::{Actor, ActorContext, ActorState, AsyncContext, Running, SpawnHandle, Supervised},
address::{Addr, MailboxError, Recipient, WeakAddr, WeakRecipient},
context::Context,
fut::{
ActorFuture, ActorFutureExt, ActorStream, ActorStreamExt, ActorTryFuture,
ActorTryFutureExt, WrapFuture, WrapStream,
},
handler::{
ActorResponse, AtomicResponse, Handler, Message, MessageResult, Response,
ResponseActFuture, ResponseFuture,
},
registry::{ArbiterService, Registry, SystemRegistry, SystemService},
stream::StreamHandler,
supervisor::Supervisor,
sync::{SyncArbiter, SyncContext},
};
pub mod prelude {
#[doc(hidden)]
#[cfg(feature = "macros")]
pub use actix_derive::{Message, MessageResponse};
pub use actix_rt::{Arbiter, ArbiterHandle, System, SystemRunner};
pub use futures_core::stream::Stream;
#[allow(deprecated)]
pub use crate::utils::Condition;
pub use crate::{
actor::{Actor, ActorContext, ActorState, AsyncContext, Running, SpawnHandle, Supervised},
actors,
address::{Addr, MailboxError, Recipient, RecipientRequest, Request, SendError},
context::{Context, ContextFutureSpawner},
dev, fut,
fut::{
ActorFuture, ActorFutureExt, ActorStream, ActorStreamExt, ActorTryFuture,
ActorTryFutureExt, WrapFuture, WrapStream,
},
handler::{
ActorResponse, AtomicResponse, Handler, Message, MessageResult, Response,
ResponseActFuture, ResponseFuture,
},
io,
registry::{ArbiterService, SystemService},
stream::StreamHandler,
supervisor::Supervisor,
sync::{SyncArbiter, SyncContext},
utils::{IntervalFunc, TimerFunc},
};
}
pub mod dev {
pub use crate::{
address::{Envelope, EnvelopeProxy, RecipientRequest, Request, ToEnvelope},
prelude::*,
};
pub mod channel {
pub use crate::address::channel::{channel, AddressReceiver, AddressSender};
}
pub use crate::{
context_impl::{AsyncContextParts, ContextFut, ContextParts},
handler::{MessageResponse, OneshotSender},
mailbox::Mailbox,
registry::{Registry, SystemRegistry},
};
}
#[allow(clippy::unit_arg, clippy::needless_doctest_main)]
pub fn run<R>(f: R) -> std::io::Result<()>
where
R: std::future::Future<Output = ()> + 'static,
{
Ok(actix_rt::System::new().block_on(f))
}