[−][src]Trait egg::RewriteScheduler
A way to customize how a Runner
runs Rewrite
s.
This gives you a way to prevent certain Rewrite
s from exploding
the EGraph
and dominating how much time is spent while running the
Runner
.
Provided methods
fn can_stop(&mut self, iteration: usize) -> bool
Whether or not the Runner
is allowed
to say it has saturated.
This is only called when the runner is otherwise saturated.
Default implementation just returns true
.
fn search_rewrite(
&mut self,
iteration: usize,
egraph: &EGraph<L, N>,
rewrite: &Rewrite<L, N>
) -> Vec<SearchMatches>
&mut self,
iteration: usize,
egraph: &EGraph<L, N>,
rewrite: &Rewrite<L, N>
) -> Vec<SearchMatches>
A hook allowing you to customize rewrite searching behavior. Useful to implement rule management.
Default implementation just calls
Rewrite::search
.
fn apply_rewrite(
&mut self,
iteration: usize,
egraph: &mut EGraph<L, N>,
rewrite: &Rewrite<L, N>,
matches: Vec<SearchMatches>
) -> usize
&mut self,
iteration: usize,
egraph: &mut EGraph<L, N>,
rewrite: &Rewrite<L, N>,
matches: Vec<SearchMatches>
) -> usize
A hook allowing you to customize rewrite application behavior. Useful to implement rule management.
Default implementation just calls
Rewrite::apply
and returns number of new applications.
Implementors
impl<L, N> RewriteScheduler<L, N> for BackoffScheduler where
L: Language,
N: Analysis<L>,
[src]
L: Language,
N: Analysis<L>,
fn can_stop(&mut self, iteration: usize) -> bool
[src]
fn search_rewrite(
&mut self,
iteration: usize,
egraph: &EGraph<L, N>,
rewrite: &Rewrite<L, N>
) -> Vec<SearchMatches>
[src]
&mut self,
iteration: usize,
egraph: &EGraph<L, N>,
rewrite: &Rewrite<L, N>
) -> Vec<SearchMatches>
impl<L, N> RewriteScheduler<L, N> for SimpleScheduler where
L: Language,
N: Analysis<L>,
[src]
L: Language,
N: Analysis<L>,