Resolve

Trait Resolve 

Source
pub trait Resolve {
    type Output<'a>
       where Self: 'a;

    // Required method
    fn resolve(
        &self,
        visitor: &mut impl Visitor,
    ) -> ResolveResult<Self::Output<'_>>;

    // Provided method
    fn resolve_root(
        &self,
        visitor: &mut impl Visitor,
    ) -> ResolveResult<Self::Output<'_>> { ... }
}
Expand description

A Depth-first search resolver, used to recursively pass a Visitor through a graph, updating dependencies.

Required Associated Types§

Source

type Output<'a> where Self: 'a

Required Methods§

Source

fn resolve(&self, visitor: &mut impl Visitor) -> ResolveResult<Self::Output<'_>>

You’re probably looking for resolve_root. This is recursively called on each node when a graph is being resolved.

Pass a Visitor through this node, resolve the latest version of all dependencies and return this node’s output.

Provided Methods§

Source

fn resolve_root( &self, visitor: &mut impl Visitor, ) -> ResolveResult<Self::Output<'_>>

Pass a Visitor through this node, resolve the latest version of all dependencies, reset the visitor and return this node’s output.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T: Resolve> Resolve for Rc<T>

Source§

type Output<'a> = <T as Resolve>::Output<'a> where Self: 'a

Source§

fn resolve(&self, visitor: &mut impl Visitor) -> ResolveResult<Self::Output<'_>>

Implementors§

Source§

impl<D, T, F> Resolve for DerivedNode<D, T, F>
where for<'a> D: Resolve + IsDirtyInferenceWorkaround<'a> + 'a, for<'a> T: UpdateDerived<<D as IsDirtyInferenceWorkaround<'a>>::OutputWorkaround, F> + HashValue + Clean + Named, F: Named,

Source§

type Output<'a> = Ref<'a, NodeState<T>> where Self: 'a

Source§

impl<T0, T1> Resolve for Dependencies2<T0, T1>
where T0: Resolve, T1: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference2<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2> Resolve for Dependencies3<T0, T1, T2>
where T0: Resolve, T1: Resolve, T2: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference3<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3> Resolve for Dependencies4<T0, T1, T2, T3>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference4<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4> Resolve for Dependencies5<T0, T1, T2, T3, T4>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference5<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5> Resolve for Dependencies6<T0, T1, T2, T3, T4, T5>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference6<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6> Resolve for Dependencies7<T0, T1, T2, T3, T4, T5, T6>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference7<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7> Resolve for Dependencies8<T0, T1, T2, T3, T4, T5, T6, T7>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, T7: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue, for<'a> <T7 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference8<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>, <T7 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> Resolve for Dependencies9<T0, T1, T2, T3, T4, T5, T6, T7, T8>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, T7: Resolve, T8: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue, for<'a> <T7 as Resolve>::Output<'a>: HashValue, for<'a> <T8 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference9<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>, <T7 as Resolve>::Output<'a>, <T8 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> Resolve for Dependencies10<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, T7: Resolve, T8: Resolve, T9: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue, for<'a> <T7 as Resolve>::Output<'a>: HashValue, for<'a> <T8 as Resolve>::Output<'a>: HashValue, for<'a> <T9 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference10<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>, <T7 as Resolve>::Output<'a>, <T8 as Resolve>::Output<'a>, <T9 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Resolve for Dependencies11<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, T7: Resolve, T8: Resolve, T9: Resolve, T10: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue, for<'a> <T7 as Resolve>::Output<'a>: HashValue, for<'a> <T8 as Resolve>::Output<'a>: HashValue, for<'a> <T9 as Resolve>::Output<'a>: HashValue, for<'a> <T10 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference11<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>, <T7 as Resolve>::Output<'a>, <T8 as Resolve>::Output<'a>, <T9 as Resolve>::Output<'a>, <T10 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Resolve for Dependencies12<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, T7: Resolve, T8: Resolve, T9: Resolve, T10: Resolve, T11: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue, for<'a> <T7 as Resolve>::Output<'a>: HashValue, for<'a> <T8 as Resolve>::Output<'a>: HashValue, for<'a> <T9 as Resolve>::Output<'a>: HashValue, for<'a> <T10 as Resolve>::Output<'a>: HashValue, for<'a> <T11 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference12<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>, <T7 as Resolve>::Output<'a>, <T8 as Resolve>::Output<'a>, <T9 as Resolve>::Output<'a>, <T10 as Resolve>::Output<'a>, <T11 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Resolve for Dependencies13<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, T7: Resolve, T8: Resolve, T9: Resolve, T10: Resolve, T11: Resolve, T12: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue, for<'a> <T7 as Resolve>::Output<'a>: HashValue, for<'a> <T8 as Resolve>::Output<'a>: HashValue, for<'a> <T9 as Resolve>::Output<'a>: HashValue, for<'a> <T10 as Resolve>::Output<'a>: HashValue, for<'a> <T11 as Resolve>::Output<'a>: HashValue, for<'a> <T12 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference13<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>, <T7 as Resolve>::Output<'a>, <T8 as Resolve>::Output<'a>, <T9 as Resolve>::Output<'a>, <T10 as Resolve>::Output<'a>, <T11 as Resolve>::Output<'a>, <T12 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Resolve for Dependencies14<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, T7: Resolve, T8: Resolve, T9: Resolve, T10: Resolve, T11: Resolve, T12: Resolve, T13: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue, for<'a> <T7 as Resolve>::Output<'a>: HashValue, for<'a> <T8 as Resolve>::Output<'a>: HashValue, for<'a> <T9 as Resolve>::Output<'a>: HashValue, for<'a> <T10 as Resolve>::Output<'a>: HashValue, for<'a> <T11 as Resolve>::Output<'a>: HashValue, for<'a> <T12 as Resolve>::Output<'a>: HashValue, for<'a> <T13 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference14<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>, <T7 as Resolve>::Output<'a>, <T8 as Resolve>::Output<'a>, <T9 as Resolve>::Output<'a>, <T10 as Resolve>::Output<'a>, <T11 as Resolve>::Output<'a>, <T12 as Resolve>::Output<'a>, <T13 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Resolve for Dependencies15<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, T7: Resolve, T8: Resolve, T9: Resolve, T10: Resolve, T11: Resolve, T12: Resolve, T13: Resolve, T14: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue, for<'a> <T7 as Resolve>::Output<'a>: HashValue, for<'a> <T8 as Resolve>::Output<'a>: HashValue, for<'a> <T9 as Resolve>::Output<'a>: HashValue, for<'a> <T10 as Resolve>::Output<'a>: HashValue, for<'a> <T11 as Resolve>::Output<'a>: HashValue, for<'a> <T12 as Resolve>::Output<'a>: HashValue, for<'a> <T13 as Resolve>::Output<'a>: HashValue, for<'a> <T14 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference15<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>, <T7 as Resolve>::Output<'a>, <T8 as Resolve>::Output<'a>, <T9 as Resolve>::Output<'a>, <T10 as Resolve>::Output<'a>, <T11 as Resolve>::Output<'a>, <T12 as Resolve>::Output<'a>, <T13 as Resolve>::Output<'a>, <T14 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Resolve for Dependencies16<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
where T0: Resolve, T1: Resolve, T2: Resolve, T3: Resolve, T4: Resolve, T5: Resolve, T6: Resolve, T7: Resolve, T8: Resolve, T9: Resolve, T10: Resolve, T11: Resolve, T12: Resolve, T13: Resolve, T14: Resolve, T15: Resolve, for<'a> <T0 as Resolve>::Output<'a>: HashValue, for<'a> <T1 as Resolve>::Output<'a>: HashValue, for<'a> <T2 as Resolve>::Output<'a>: HashValue, for<'a> <T3 as Resolve>::Output<'a>: HashValue, for<'a> <T4 as Resolve>::Output<'a>: HashValue, for<'a> <T5 as Resolve>::Output<'a>: HashValue, for<'a> <T6 as Resolve>::Output<'a>: HashValue, for<'a> <T7 as Resolve>::Output<'a>: HashValue, for<'a> <T8 as Resolve>::Output<'a>: HashValue, for<'a> <T9 as Resolve>::Output<'a>: HashValue, for<'a> <T10 as Resolve>::Output<'a>: HashValue, for<'a> <T11 as Resolve>::Output<'a>: HashValue, for<'a> <T12 as Resolve>::Output<'a>: HashValue, for<'a> <T13 as Resolve>::Output<'a>: HashValue, for<'a> <T14 as Resolve>::Output<'a>: HashValue, for<'a> <T15 as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyReference16<'a, <T0 as Resolve>::Output<'a>, <T1 as Resolve>::Output<'a>, <T2 as Resolve>::Output<'a>, <T3 as Resolve>::Output<'a>, <T4 as Resolve>::Output<'a>, <T5 as Resolve>::Output<'a>, <T6 as Resolve>::Output<'a>, <T7 as Resolve>::Output<'a>, <T8 as Resolve>::Output<'a>, <T9 as Resolve>::Output<'a>, <T10 as Resolve>::Output<'a>, <T11 as Resolve>::Output<'a>, <T12 as Resolve>::Output<'a>, <T13 as Resolve>::Output<'a>, <T14 as Resolve>::Output<'a>, <T15 as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T> Resolve for Dependency<T>
where T: Resolve, for<'a> <T as Resolve>::Output<'a>: HashValue,

Source§

type Output<'a> = DependencyEdge<'a, <T as Resolve>::Output<'a>> where Self: 'a

Source§

impl<T> Resolve for InputNode<T>
where T: UpdateInput,

Source§

type Output<'a> = Ref<'a, NodeState<T>> where Self: 'a