Skip to main content

shutdown_target

Function shutdown_target 

Source
pub fn shutdown_target<Parent, Role, Targets>(
    _: Role,
    creation: CreationId,
) -> Targets
where Parent: Behavior, Role: ChildRole<Parent>, Targets: ShutdownTargetAt<Role::Child, Role::Position>,
Expand description

Lower one Behavior-owned named child ID into an existing heterogeneous shutdown target sum.

Parent fixes the ChildRole implementation, allowing the compiler to select the exact structural position even when several roles share one child behavior type. An unrelated role cannot select a target. The creation ID remains opaque creator-local correlation; it is not statically branded with the selected role.

ⓘ
struct Worker;
#[behavior::behavior(
    addr = behavior::MailAddr,
    message = behavior::Never,
)]
impl Worker {
    fn receive(
        &mut self,
        _: behavior::MailAddr,
        message: behavior::Never,
    ) -> behavior::BehaviorActed<Self> {
        match message {}
    }
}
struct Parent;
#[behavior::behavior(
    addr = behavior::MailAddr,
    message = behavior::Never,
    births = { primary: Worker, fallback: Worker },
    creation_settlements = retain_for_retirement,
)]
impl Parent {
    fn receive(
        &mut self,
        _: behavior::MailAddr,
        message: behavior::Never,
    ) -> behavior::BehaviorActed<Self> {
        match message {}
    }
}
struct UnrelatedRole;
type Targets = behavior_actors::ShutdownChoice<
    Worker,
    behavior_actors::ShutdownChoice<
        Worker,
        behavior_actors::NoShutdownTargets<behavior::MailAddr>,
    >,
>;
let mut creations = behavior::CreationSequence::new();
let child = creations.issue().expect("fixture creation ID");
let _: Targets =
    behavior_actors::shutdown_target::<Parent, _, Targets>(UnrelatedRole, child);