Trait kas::layout::RulesSolver[][src]

pub trait RulesSolver {
    type Storage: Clone;
    type ChildInfo;
    fn for_child<CR>(
        &mut self,
        storage: &mut Self::Storage,
        child_info: Self::ChildInfo,
        child_rules: CR
    )
    where
        CR: FnOnce(AxisInfo) -> SizeRules
;
fn finish(self, storage: &mut Self::Storage) -> SizeRules; }
Expand description

A SizeRules solver for layouts

Typically, a solver is invoked twice, once for each axis, before the corresponding RulesSetter is invoked. This is managed by SolveCache.

Implementations require access to storage able to persist between multiple solver runs and a subsequent setter run. This storage is of type RulesSolver::Storage and is passed via reference to the constructor.

Associated Types

Type of storage

Type required by RulesSolver::for_child (see implementation documentation)

Required methods

Called once for each child. For most layouts the order is important.

Called at the end to output SizeRules.

Note that this does not include margins!

Implementors