SpecInheritanceResolver

Struct SpecInheritanceResolver 

Source
pub struct SpecInheritanceResolver;
Expand description

Manages hierarchical spec resolution with explicit precedence

Implementations§

Source§

impl SpecInheritanceResolver

Source

pub fn resolve(specs: &[Spec]) -> Result<Vec<Spec>, SpecError>

Resolve spec hierarchy (project > feature > task)

Organizes specs by their precedence level and returns them in order from highest precedence (project level, 0) to lowest (task level, 2).

§Arguments
  • specs - Collection of specs to resolve
§Returns
  • Ok(Vec<Spec>) - Specs sorted by precedence level (highest first)
  • Err(SpecError) - If circular dependencies or conflicts are detected
Source

pub fn merge(parent: &Spec, child: &Spec) -> Result<Spec, SpecError>

Merge two specs with precedence rules

Merges a child spec into a parent spec, with the parent taking precedence. Higher precedence level specs override lower precedence level specs.

§Arguments
  • parent - Parent spec (higher precedence)
  • child - Child spec (lower precedence)
§Returns
  • Ok(Spec) - Merged spec with parent values taking precedence
  • Err(SpecError) - If merge would create conflicts
Source

pub fn validate_chain(specs: &[Spec]) -> Result<(), SpecError>

Validate inheritance chain for conflicts and circular dependencies

Checks that:

  1. No circular dependencies exist
  2. Precedence levels are consistent
  3. Parent-child relationships are valid
§Arguments
  • specs - Collection of specs to validate
§Returns
  • Ok(()) - If chain is valid
  • Err(SpecError) - If circular dependencies or conflicts are detected

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: 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, 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