Skip to main content

## EmissionGuarantee

# 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§

Source§

### impl EmissionGuarantee for BugAbort

Source§

#### type EmitResult = !

Source§

### impl EmissionGuarantee for ErrorGuaranteed

Source§

### impl EmissionGuarantee for FatalAbort

Source§

#### type EmitResult = !

Source§

### impl EmissionGuarantee for FatalError