pub struct System<R, L = NoLifecycle> { /* private fields */ }Expand description
Tokio-backed actor execution boundary with shared typed routing.
Implementations§
Source§impl<R> System<R>
impl<R> System<R>
Sourcepub const fn new(mailbox: MailboxConfig, router: R) -> System<R>
pub const fn new(mailbox: MailboxConfig, router: R) -> System<R>
Construct a Tokio-backed system from its communication configuration and router.
Sourcepub const fn with_lifecycle<S>(
mailbox: MailboxConfig,
router: R,
lifecycle: S,
) -> System<R, Lifecycle<S>>
pub const fn with_lifecycle<S>( mailbox: MailboxConfig, router: R, lifecycle: S, ) -> System<R, Lifecycle<S>>
Construct a Tokio-backed system with a statically dispatched lifecycle sink.
Source§impl<R, L> System<R, L>
impl<R, L> System<R, L>
Sourcepub async fn activate<B>(
&self,
address: <B as Behavior>::Addr,
behavior: B,
) -> Result<RootActivation<B, RootRetirement<ActorRef<<B as Behavior>::Addr, MailboxSender<<B as Behavior>::Event>, <L as LifecycleFactory<<B as Behavior>::Addr, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration>>::Reporter>, Result<RunExit<Exit<<B as Behavior>::Addr>>, RunError<<B as Behavior>::Error, <ActorEnvironment<B, MailboxReceiver<<B as Behavior>::Event>, R, <<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime, MailboxAnchor<<B as Behavior>::Event>, NoParent> as Environment>::Error>>>>, SystemBirthError<<R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Error, <B as Behavior>::Error, <ActorEnvironment<B, MailboxReceiver<<B as Behavior>::Event>, R, <<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime, MailboxAnchor<<B as Behavior>::Event>, NoParent> as Environment>::Error>>where
B: Behavior<Ph = Never> + Send + 'static,
<B as Behavior>::Addr: Send + Sync + 'static,
<<B as Behavior>::Addr as Address>::Nonce: Send + 'static,
<B as Behavior>::Sends: RouteSends<<B as Behavior>::Addr, IncarnationEffects<R, <<B as Behavior>::Addr as Address>::Nonce, <<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Lease, MailboxAnchor<<B as Behavior>::Event>, NoParent, <B as Behavior>::Addr>> + ObservesCreations<<<B as Behavior>::Addr as Address>::Nonce> + Send + 'static,
<<B as Behavior>::Sends as RouteSends<<B as Behavior>::Addr, IncarnationEffects<R, <<B as Behavior>::Addr as Address>::Nonce, <<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Lease, MailboxAnchor<<B as Behavior>::Event>, NoParent, <B as Behavior>::Addr>>>::Error: Send + Sync + 'static,
<B as Behavior>::Birth: RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>> + 'static,
<<B as Behavior>::Birth as BirthMode>::Child: Send + 'static,
<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime: Send + Sync + 'static,
<<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Error: CreationFailure + Send + Sync + 'static,
<B as Behavior>::Event: ShutdownEvent + TimeEvent + Send + 'static,
<B as Behavior>::Msg: Send + 'static,
<B as Behavior>::Error: Send + Sync + 'static,
R: Clone + EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>> + Send + Sync + 'static,
<R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration: Send + 'static,
L: LifecycleFactory<<B as Behavior>::Addr, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration>,
pub async fn activate<B>(
&self,
address: <B as Behavior>::Addr,
behavior: B,
) -> Result<RootActivation<B, RootRetirement<ActorRef<<B as Behavior>::Addr, MailboxSender<<B as Behavior>::Event>, <L as LifecycleFactory<<B as Behavior>::Addr, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration>>::Reporter>, Result<RunExit<Exit<<B as Behavior>::Addr>>, RunError<<B as Behavior>::Error, <ActorEnvironment<B, MailboxReceiver<<B as Behavior>::Event>, R, <<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime, MailboxAnchor<<B as Behavior>::Event>, NoParent> as Environment>::Error>>>>, SystemBirthError<<R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Error, <B as Behavior>::Error, <ActorEnvironment<B, MailboxReceiver<<B as Behavior>::Event>, R, <<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime, MailboxAnchor<<B as Behavior>::Event>, NoParent> as Environment>::Error>>where
B: Behavior<Ph = Never> + Send + 'static,
<B as Behavior>::Addr: Send + Sync + 'static,
<<B as Behavior>::Addr as Address>::Nonce: Send + 'static,
<B as Behavior>::Sends: RouteSends<<B as Behavior>::Addr, IncarnationEffects<R, <<B as Behavior>::Addr as Address>::Nonce, <<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Lease, MailboxAnchor<<B as Behavior>::Event>, NoParent, <B as Behavior>::Addr>> + ObservesCreations<<<B as Behavior>::Addr as Address>::Nonce> + Send + 'static,
<<B as Behavior>::Sends as RouteSends<<B as Behavior>::Addr, IncarnationEffects<R, <<B as Behavior>::Addr as Address>::Nonce, <<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Lease, MailboxAnchor<<B as Behavior>::Event>, NoParent, <B as Behavior>::Addr>>>::Error: Send + Sync + 'static,
<B as Behavior>::Birth: RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>> + 'static,
<<B as Behavior>::Birth as BirthMode>::Child: Send + 'static,
<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime: Send + Sync + 'static,
<<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Error: CreationFailure + Send + Sync + 'static,
<B as Behavior>::Event: ShutdownEvent + TimeEvent + Send + 'static,
<B as Behavior>::Msg: Send + 'static,
<B as Behavior>::Error: Send + Sync + 'static,
R: Clone + EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>> + Send + Sync + 'static,
<R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration: Send + 'static,
L: LifecycleFactory<<B as Behavior>::Addr, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration>,
Initialize, register, and launch one exact root incarnation transactionally.
§Errors
Preserves initialization-fold, initialization-effect, and registration failures as separate variants. No endpoint is registered when either initialization stage fails.
Sourcepub fn spawn<B>(
&self,
address: <B as Behavior>::Addr,
behavior: B,
) -> Result<Handle<ActorRef<<B as Behavior>::Addr, MailboxSender<<B as Behavior>::Event>, <L as LifecycleFactory<<B as Behavior>::Addr, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration>>::Reporter>, Result<RunExit<Exit<<B as Behavior>::Addr>>, RunError<<B as Behavior>::Error, <ActorEnvironment<B, MailboxReceiver<<B as Behavior>::Event>, R, <<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime, MailboxAnchor<<B as Behavior>::Event>, NoParent> as Environment>::Error>>>, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Error>where
B: Behavior<Ph = Never> + Send + 'static,
<B as Behavior>::Addr: Send + Sync + 'static,
<<B as Behavior>::Addr as Address>::Nonce: Send + 'static,
<B as Behavior>::Sends: RouteSends<<B as Behavior>::Addr, IncarnationEffects<R, <<B as Behavior>::Addr as Address>::Nonce, <<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Lease, MailboxAnchor<<B as Behavior>::Event>, NoParent, <B as Behavior>::Addr>> + ObservesCreations<<<B as Behavior>::Addr as Address>::Nonce> + Send + 'static,
<<B as Behavior>::Sends as RouteSends<<B as Behavior>::Addr, IncarnationEffects<R, <<B as Behavior>::Addr as Address>::Nonce, <<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Lease, MailboxAnchor<<B as Behavior>::Event>, NoParent, <B as Behavior>::Addr>>>::Error: Send + Sync + 'static,
<B as Behavior>::Birth: RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>> + 'static,
<<B as Behavior>::Birth as BirthMode>::Child: Send + 'static,
<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime: Send + Sync + 'static,
<<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Error: CreationFailure + Send + Sync + 'static,
<B as Behavior>::Event: TimeEvent + Send + 'static,
<B as Behavior>::Msg: Send + 'static,
<B as Behavior>::Error: Send + Sync + 'static,
R: Clone + EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>> + Send + Sync + 'static,
<R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration: Send + 'static,
L: LifecycleFactory<<B as Behavior>::Addr, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration>,
pub fn spawn<B>(
&self,
address: <B as Behavior>::Addr,
behavior: B,
) -> Result<Handle<ActorRef<<B as Behavior>::Addr, MailboxSender<<B as Behavior>::Event>, <L as LifecycleFactory<<B as Behavior>::Addr, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration>>::Reporter>, Result<RunExit<Exit<<B as Behavior>::Addr>>, RunError<<B as Behavior>::Error, <ActorEnvironment<B, MailboxReceiver<<B as Behavior>::Event>, R, <<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime, MailboxAnchor<<B as Behavior>::Event>, NoParent> as Environment>::Error>>>, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Error>where
B: Behavior<Ph = Never> + Send + 'static,
<B as Behavior>::Addr: Send + Sync + 'static,
<<B as Behavior>::Addr as Address>::Nonce: Send + 'static,
<B as Behavior>::Sends: RouteSends<<B as Behavior>::Addr, IncarnationEffects<R, <<B as Behavior>::Addr as Address>::Nonce, <<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Lease, MailboxAnchor<<B as Behavior>::Event>, NoParent, <B as Behavior>::Addr>> + ObservesCreations<<<B as Behavior>::Addr as Address>::Nonce> + Send + 'static,
<<B as Behavior>::Sends as RouteSends<<B as Behavior>::Addr, IncarnationEffects<R, <<B as Behavior>::Addr as Address>::Nonce, <<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Lease, MailboxAnchor<<B as Behavior>::Event>, NoParent, <B as Behavior>::Addr>>>::Error: Send + Sync + 'static,
<B as Behavior>::Birth: RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>> + 'static,
<<B as Behavior>::Birth as BirthMode>::Child: Send + 'static,
<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime: Send + Sync + 'static,
<<<B as Behavior>::Birth as RuntimeBirthMode<<B as Behavior>::Addr, System<R, L>, MailboxAnchor<<B as Behavior>::Event>>>::Runtime as ChildRuntime<<B as Behavior>::Addr, <<B as Behavior>::Birth as BirthMode>::Child, MailboxAnchor<<B as Behavior>::Event>>>::Error: CreationFailure + Send + Sync + 'static,
<B as Behavior>::Event: TimeEvent + Send + 'static,
<B as Behavior>::Msg: Send + 'static,
<B as Behavior>::Error: Send + Sync + 'static,
R: Clone + EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>> + Send + Sync + 'static,
<R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration: Send + 'static,
L: LifecycleFactory<<B as Behavior>::Addr, <R as EndpointRegistry<<B as Behavior>::Addr, <B as Behavior>::Msg, IncarnationEndpoint<<B as Behavior>::Addr, ActorRef<<B as Behavior>::Addr, MailboxAnchor<<B as Behavior>::Event>>>>>::Registration>,
Trait Implementations§
Auto Trait Implementations§
impl<R, L> Freeze for System<R, L>
impl<R, L> RefUnwindSafe for System<R, L>where
R: RefUnwindSafe,
L: RefUnwindSafe,
impl<R, L> Send for System<R, L>
impl<R, L> Sync for System<R, L>
impl<R, L> Unpin for System<R, L>
impl<R, L> UnsafeUnpin for System<R, L>where
R: UnsafeUnpin,
L: UnsafeUnpin,
impl<R, L> UnwindSafe for System<R, L>where
R: UnwindSafe,
L: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more