struct DiagnosticBuilderInner<'a> {
state: DiagnosticBuilderState<'a>,
diagnostic: Box<Diagnostic>,
}
Expand description
This type exists only for DiagnosticBuilder::forget_guarantee
, because it:
- lacks the
G
parameter and thereforeDiagnosticBuilder<G1>
can be converted intoDiagnosticBuilder<G2>
while reusing theinner
field - can implement the
Drop
“bomb” instead ofDiagnosticBuilder
, as it contains all of the data (state
+diagnostic
) ofDiagnosticBuilder
The diagnostic
field is not Copy
and can’t be moved out of whichever
type implements the Drop
“bomb”, but because of the above two facts, that
never needs to happen - instead, the whole inner: DiagnosticBuilderInner
can be moved out of a DiagnosticBuilder
and into another.
Fields§
§state: DiagnosticBuilderState<'a>
§diagnostic: Box<Diagnostic>
Diagnostic
is a large type, and DiagnosticBuilder
is often used as a
return value, especially within the frequently-used PResult
type.
In theory, return value optimization (RVO) should avoid unnecessary
copying. In practice, it does not (at the time of writing).
Trait Implementations§
source§impl<'a> Clone for DiagnosticBuilderInner<'a>
impl<'a> Clone for DiagnosticBuilderInner<'a>
source§fn clone(&self) -> DiagnosticBuilderInner<'a>
fn clone(&self) -> DiagnosticBuilderInner<'a>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<'a> !RefUnwindSafe for DiagnosticBuilderInner<'a>
impl<'a> !Send for DiagnosticBuilderInner<'a>
impl<'a> !Sync for DiagnosticBuilderInner<'a>
impl<'a> Unpin for DiagnosticBuilderInner<'a>
impl<'a> !UnwindSafe for DiagnosticBuilderInner<'a>
Blanket Implementations§
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: 16 bytes