pub(super) struct CoverageCounters {
    function_source_hash: u64,
    next_counter_id: u32,
    num_expressions: u32,
    pub debug_counters: DebugCounters,
}
Expand description

Manages the counter and expression indexes/IDs to generate CoverageKind components for MIR Coverage statements.

Fields§

§function_source_hash: u64§next_counter_id: u32§num_expressions: u32§debug_counters: DebugCounters

Implementations§

source§

impl CoverageCounters

source

pub fn new(function_source_hash: u64) -> Self

source

pub fn enable_debug(&mut self)

Activate the DebugCounters data structures, to provide additional debug formatting features when formatting CoverageKind (counter) values.

source

pub fn make_bcb_counters( &mut self, basic_coverage_blocks: &mut CoverageGraph, coverage_spans: &[CoverageSpan] ) -> Result<Vec<CoverageKind>, Error>

Makes CoverageKind Counters and Expressions for the BasicCoverageBlocks directly or indirectly associated with CoverageSpans, and returns additional Expressions representing intermediate values.

source

fn make_counter<F>(&mut self, debug_block_label_fn: F) -> CoverageKindwhere F: Fn() -> Option<String>,

source

fn make_expression<F>( &mut self, lhs: ExpressionOperandId, op: Op, rhs: ExpressionOperandId, debug_block_label_fn: F ) -> CoverageKindwhere F: Fn() -> Option<String>,

source

pub fn make_identity_counter( &mut self, counter_operand: ExpressionOperandId ) -> CoverageKind

source

fn next_counter(&mut self) -> CounterValueReference

Counter IDs start from one and go up.

source

fn next_expression(&mut self) -> InjectedExpressionId

Expression IDs start from u32::MAX and go down because an Expression can reference (add or subtract counts) of both Counter regions and Expression regions. The counter expression operand IDs must be unique across both types.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.

Size:48 bytes