Struct snowcap::optimizers::OptimizerTRTA[][src]

pub struct OptimizerTRTA<P> where
    P: SoftPolicy + Clone
{ /* fields omitted */ }

One Optimizer To Rule Them All

This is the one optimizer to rule them all, combining the best from the TreeOptimizer and the DepGroupsOptimizer into one single optimizer.

Description

The optimizer works by exploring the search space of all possible orderings in a tree-like manner. This means, that it proceeds by taking at each step the best possible modifier in terms of minimizing the cost. All others are remembered to be explored later. Once there are no valid modifiers left to try, we are stuck.

When we are stuck, we try to solve the current problem by finding a dependency group. This procedure is explained in detail here. If a dependency with a valid solution could be found, then we reset the exploration tree, but with the group now treated as one single modifier. If however no dependency group could be learned, then backtrack in the current exploration tree, until we have either explored everything, or found a valid solution.

Trait Implementations

impl<P> Optimizer<P> for OptimizerTRTA<P> where
    P: SoftPolicy + Clone
[src]

Auto Trait Implementations

impl<P> RefUnwindSafe for OptimizerTRTA<P> where
    P: RefUnwindSafe
[src]

impl<P> !Send for OptimizerTRTA<P>[src]

impl<P> !Sync for OptimizerTRTA<P>[src]

impl<P> Unpin for OptimizerTRTA<P> where
    P: Unpin
[src]

impl<P> UnwindSafe for OptimizerTRTA<P> where
    P: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]