Skip to main content

Analyzer

Trait Analyzer 

Source
pub trait Analyzer<'db, 'a> {
    type Info: Clone;

    // Required methods
    fn merge_match(
        &mut self,
        statement_location: StatementLocation,
        match_info: &'a MatchInfo<'db>,
        infos: impl Iterator<Item = Self::Info>,
    ) -> Self::Info;
    fn info_from_return(
        &mut self,
        statement_location: StatementLocation,
        vars: &'a [VarUsage<'db>],
    ) -> Self::Info;

    // Provided methods
    fn visit_block_start(
        &mut self,
        info: &mut Self::Info,
        block_id: BlockId,
        block: &Block<'db>,
    ) { ... }
    fn visit_stmt(
        &mut self,
        info: &mut Self::Info,
        statement_location: StatementLocation,
        stmt: &'a Statement<'db>,
    ) { ... }
    fn visit_goto(
        &mut self,
        info: &mut Self::Info,
        statement_location: StatementLocation,
        target_block_id: BlockId,
        remapping: &'a VarRemapping<'db>,
    ) { ... }
    fn info_from_panic(
        &mut self,
        statement_location: StatementLocation,
        var: &VarUsage<'db>,
    ) -> Self::Info { ... }
}
Expand description

Analyzer trait to implement for each specific analysis.

Required Associated Types§

Required Methods§

Source

fn merge_match( &mut self, statement_location: StatementLocation, match_info: &'a MatchInfo<'db>, infos: impl Iterator<Item = Self::Info>, ) -> Self::Info

Source

fn info_from_return( &mut self, statement_location: StatementLocation, vars: &'a [VarUsage<'db>], ) -> Self::Info

Provided Methods§

Source

fn visit_block_start( &mut self, info: &mut Self::Info, block_id: BlockId, block: &Block<'db>, )

Source

fn visit_stmt( &mut self, info: &mut Self::Info, statement_location: StatementLocation, stmt: &'a Statement<'db>, )

Source

fn visit_goto( &mut self, info: &mut Self::Info, statement_location: StatementLocation, target_block_id: BlockId, remapping: &'a VarRemapping<'db>, )

Source

fn info_from_panic( &mut self, statement_location: StatementLocation, var: &VarUsage<'db>, ) -> Self::Info

Default info_from_panic implementation for post ‘lower_panics’ phases. Earlier phases need to override this implementation.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<'db, 'a, TAnalyzer: DataflowAnalyzer<'db, 'a>> Analyzer<'db, 'a> for AnalyzerAdapter<'db, 'a, TAnalyzer>

Source§

type Info = <TAnalyzer as DataflowAnalyzer<'db, 'a>>::Info

Source§

impl<'db, 'a> Analyzer<'db, 'a> for ReturnOptimizerContext<'db, 'a>

Source§

impl<'db, 'mt> Analyzer<'db, '_> for BorrowChecker<'db, 'mt, '_>

Source§

impl<'db: 'a, 'a> Analyzer<'db, 'a> for MatchOptimizerContext<'db, 'a>

Source§

type Info = AnalysisInfo<'db, 'a>

Source§

impl<'db> Analyzer<'db, '_> for DestructAdder<'db, '_>

Source§

impl<'db> Analyzer<'db, '_> for ReorderStatementsContext<'db>