Skip to main content

ChildSpec

Struct ChildSpec 

Source
pub struct ChildSpec {
    pub name: ChildName,
    pub start: Box<dyn ChildStart>,
    pub restart: SupervisionStrategy,
    pub shutdown_budget: Budget,
    pub depends_on: Vec<ChildName>,
    pub registration: NameRegistrationPolicy,
    pub start_immediately: bool,
    pub required: bool,
}
Expand description

Specification for a supervised child.

This is the compiled topology input for the SPORK supervisor builder. It is intentionally explicit: all “ambient” behavior (naming, restart, ordering) is specified in data so that the compiled runtime is deterministic.

Fields§

§name: ChildName

Unique child identifier (stable tie-break key).

§start: Box<dyn ChildStart>

Start factory (invoked at initial start and on restart).

§restart: SupervisionStrategy

Restart strategy for this child (Stop/Restart/Escalate).

§shutdown_budget: Budget

Shutdown/cleanup budget for this child (used during supervisor stop).

§depends_on: Vec<ChildName>

Explicit dependencies (child names). Used to compute deterministic start order.

§registration: NameRegistrationPolicy

Optional name registration policy.

§start_immediately: bool

Whether the child should be started immediately at supervisor boot.

§required: bool

Whether the child is required (supervisor fails if child can’t start).

Implementations§

Source§

impl ChildSpec

Source

pub fn new<F>(name: impl Into<ChildName>, start: F) -> Self
where F: ChildStart + 'static,

Create a new child spec.

The child is required and start_immediately by default.

Source

pub fn with_restart(self, restart: SupervisionStrategy) -> Self

Set the restart strategy for this child.

Source

pub fn with_shutdown_budget(self, budget: Budget) -> Self

Set the shutdown budget for this child.

Source

pub fn depends_on(self, name: impl Into<ChildName>) -> Self

Add a dependency on another child by name.

Source

pub fn with_registration(self, policy: NameRegistrationPolicy) -> Self

Set name registration policy for this child.

Source

pub fn with_start_immediately(self, start: bool) -> Self

Set whether the child should start immediately.

Source

pub fn with_required(self, required: bool) -> Self

Set whether the child is required.

Source

pub fn spec_eq(&self, other: &Self) -> bool

Compare two child specs by deterministic declarative surface only.

This intentionally ignores the start factory closure and compares only pure spec fields so builder outputs can be compared in tests and tooling without depending on closure identity.

Source

pub fn spec_fingerprint(&self) -> u64

Deterministic fingerprint of the declarative child spec fields.

Like spec_eq, this excludes the start closure and hashes only pure spec data.

Trait Implementations§

Source§

impl Debug for ChildSpec

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, _span: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more