pub enum CoverageKind {
Point {
point_kind: PointKind,
hir_id: HirId,
},
BlockMarker {
id: BlockMarkerId,
},
VirtualCounter {
bcb: BasicCoverageBlock,
},
}Variants§
Point
Associates a HIR node (such as an expression) with a particular point in
MIR control-flow. The relationship between the node and the point is
indicated by PointKind. Injected during MIR building.
BlockMarker
Marks its enclosing basic block with an ID that can be referred to by
side data in CoverageEarlyInfo.
Should be erased before codegen (at some point after InstrumentCoverage).
Fields
id: BlockMarkerIdVirtualCounter
Marks its enclosing basic block with the ID of the coverage graph node
that it was part of during the InstrumentCoverage MIR pass.
During codegen, this might be lowered to llvm.instrprof.increment or
to a no-op, depending on the outcome of counter-creation.
Fields
bcb: BasicCoverageBlockImplementations§
Source§impl CoverageKind
impl CoverageKind
Sourcepub fn is_removed_after_analysis(&self) -> bool
pub fn is_removed_after_analysis(&self) -> bool
Returns true if this kind of coverage statement is a marker inserted during
MIR building, for use by analysis in the InstrumentCoverage pass, and is
no longer needed after that pass.
Trait Implementations§
Source§impl Clone for CoverageKind
impl Clone for CoverageKind
Source§impl Debug for CoverageKind
impl Debug for CoverageKind
Source§impl<'tcx, __D: TyDecoder<'tcx>> Decodable<__D> for CoverageKind
impl<'tcx, __D: TyDecoder<'tcx>> Decodable<__D> for CoverageKind
Source§impl<'tcx, __E: TyEncoder<'tcx>> Encodable<__E> for CoverageKind
impl<'tcx, __E: TyEncoder<'tcx>> Encodable<__E> for CoverageKind
Source§impl PartialEq for CoverageKind
impl PartialEq for CoverageKind
Source§impl StableHash for CoverageKind
impl StableHash for CoverageKind
fn stable_hash<__Hcx: StableHashCtxt>( &self, __hcx: &mut __Hcx, __hasher: &mut StableHasher, )
impl StructuralPartialEq for CoverageKind
Auto Trait Implementations§
impl DynSend for CoverageKind
impl DynSync for CoverageKind
impl Freeze for CoverageKind
impl RefUnwindSafe for CoverageKind
impl Send for CoverageKind
impl Sync for CoverageKind
impl Unpin for CoverageKind
impl UnsafeUnpin for CoverageKind
impl UnwindSafe for CoverageKind
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<'tcx, T> DepNodeKey<'tcx> for Twhere
T: StableHash + Debug,
impl<'tcx, T> DepNodeKey<'tcx> for Twhere
T: StableHash + Debug,
default fn key_fingerprint_style() -> KeyFingerprintStyle
Source§default fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint
default fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint
Fingerprint to be used
in DepNode.Source§default fn try_recover_key(_: TyCtxt<'tcx>, _: &DepNode) -> Option<T>
default fn try_recover_key(_: TyCtxt<'tcx>, _: &DepNode) -> Option<T>
DepNode,
something which is needed when forcing DepNodes during red-green
evaluation. The query system will only call this method if
fingerprint_style() is not FingerprintStyle::Opaque.
It is always valid to return None here, in which case incremental
compilation will treat the query as having changed instead of forcing it.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
Source§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
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: 12 bytes
Size for each variant:
Point: 11 bytesBlockMarker: 7 bytesVirtualCounter: 7 bytes