Trait mz_transform::analysis::Analysis
source · pub trait Analysis: 'static {
type Value: Debug;
// Required method
fn derive(
expr: &MirRelationExpr,
index: usize,
results: &[Self::Value],
depends: &Derived
) -> Self::Value;
// Provided methods
fn announce_dependencies(_builder: &mut DerivedBuilder<'_>) { ... }
fn lattice() -> Option<Box<dyn Lattice<Self::Value>>> { ... }
}
Expand description
An analysis that can be applied bottom-up to a MirRelationExpr
.
Required Associated Types§
Required Methods§
sourcefn derive(
expr: &MirRelationExpr,
index: usize,
results: &[Self::Value],
depends: &Derived
) -> Self::Value
fn derive( expr: &MirRelationExpr, index: usize, results: &[Self::Value], depends: &Derived ) -> Self::Value
The analysis value derived for an expression, given other analysis results.
The other analysis results include the results of this analysis for all children,
in results
, and the results of other analyses this analysis has expressed a
dependence upon, in depends
, for children and the expression itself.
The analysis results for Self
can only be found in results
, and are not
available in depends
.
The index
indicates the post-order index for the expression, for use in finding
the corresponding information in results
and depends
.
The return result will be associated with this expression for this analysis, and the analyses will continue.
Provided Methods§
sourcefn announce_dependencies(_builder: &mut DerivedBuilder<'_>)
fn announce_dependencies(_builder: &mut DerivedBuilder<'_>)
Announce any depencies this analysis has on other analyses.
The method should invoke builder.require::<Foo>()
for each other
analysis Foo
this analysis depends upon.