#[non_exhaustive]pub struct Rewrite<L, N> {
pub name: Symbol,
pub searcher: Arc<dyn Searcher<L, N> + Sync + Send>,
pub applier: Arc<dyn Applier<L, N> + Sync + Send>,
}
Expand description
A rewrite that searches for the lefthand side and applies the righthand side.
The rewrite!
macro is the easiest way to create rewrites.
A Rewrite
consists principally of a Searcher
(the lefthand
side) and an Applier
(the righthand side).
It additionally stores a name used to refer to the rewrite and a
long name used for debugging.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.name: Symbol
The name of the rewrite.
searcher: Arc<dyn Searcher<L, N> + Sync + Send>
The searcher (left-hand side) of the rewrite.
applier: Arc<dyn Applier<L, N> + Sync + Send>
The applier (right-hand side) of the rewrite.
Implementations§
source§impl<L: Language, N: Analysis<L>> Rewrite<L, N>
impl<L: Language, N: Analysis<L>> Rewrite<L, N>
sourcepub fn new(
name: impl Into<Symbol>,
searcher: impl Searcher<L, N> + Send + Sync + 'static,
applier: impl Applier<L, N> + Send + Sync + 'static
) -> Result<Self, String>
pub fn new( name: impl Into<Symbol>, searcher: impl Searcher<L, N> + Send + Sync + 'static, applier: impl Applier<L, N> + Send + Sync + 'static ) -> Result<Self, String>
sourcepub fn search(&self, egraph: &EGraph<L, N>) -> Vec<SearchMatches<'_, L>>
pub fn search(&self, egraph: &EGraph<L, N>) -> Vec<SearchMatches<'_, L>>
sourcepub fn search_with_limit(
&self,
egraph: &EGraph<L, N>,
limit: usize
) -> Vec<SearchMatches<'_, L>>
pub fn search_with_limit( &self, egraph: &EGraph<L, N>, limit: usize ) -> Vec<SearchMatches<'_, L>>
Call search_with_limit
on the Searcher
.
sourcepub fn apply(
&self,
egraph: &mut EGraph<L, N>,
matches: &[SearchMatches<'_, L>]
) -> Vec<Id>
pub fn apply( &self, egraph: &mut EGraph<L, N>, matches: &[SearchMatches<'_, L>] ) -> Vec<Id>
Call apply_matches
on the Applier
.
Trait Implementations§
Auto Trait Implementations§
impl<L, N> !RefUnwindSafe for Rewrite<L, N>
impl<L, N> Send for Rewrite<L, N>
impl<L, N> Sync for Rewrite<L, N>
impl<L, N> Unpin for Rewrite<L, N>
impl<L, N> !UnwindSafe for Rewrite<L, N>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more