rustc_errors::diagnostic

Trait EmissionGuarantee

source
pub trait EmissionGuarantee: Sized {
    type EmitResult = Self;

    // Required method
    fn emit_producing_guarantee(diag: Diag<'_, Self>) -> Self::EmitResult;
}
Expand description

Trait for types that Diag::emit can return as a “guarantee” (or “proof”) token that the emission happened.

Provided Associated Types§

source

type EmitResult = Self

This exists so that bugs and fatal errors can both result in ! (an abort) when emitted, but have different aborting behaviour.

Required Methods§

source

fn emit_producing_guarantee(diag: Diag<'_, Self>) -> Self::EmitResult

Implementation of Diag::emit, fully controlled by each impl of EmissionGuarantee, to make it impossible to create a value of Self::EmitResult without actually performing the emission.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

source§

impl EmissionGuarantee for ()

source§

fn emit_producing_guarantee(diag: Diag<'_, Self>) -> Self::EmitResult

Implementors§