#[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
sourceimpl<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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
🔬 This is a nightly-only experimental API. (
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more