pub fn shutdown_target<Parent, Role, Targets>(
_: Role,
creation: CreationId,
) -> Targetswhere
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);