Struct rustc_middle::traits::ObligationCause [−][src]
pub struct ObligationCause<'tcx> {
data: Option<Lrc<ObligationCauseData<'tcx>>>,
}
Expand description
The reason why we incurred this obligation; used for error reporting.
As the happy path does not care about this struct, storing this on the heap ends up increasing performance.
We do not want to intern this as there are a lot of obligation causes which only live for a short period of time.
Fields
data: Option<Lrc<ObligationCauseData<'tcx>>>
None
for ObligationCause::dummy
, Some
otherwise.
Implementations
pub fn new(
span: Span,
body_id: HirId,
code: ObligationCauseCode<'tcx>
) -> ObligationCause<'tcx>
Trait Implementations
type Target = ObligationCauseData<'tcx>
type Target = ObligationCauseData<'tcx>
The resulting type after dereferencing.
type Lifted = ObligationCause<'__lifted>
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
This method tests for !=
.
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for ObligationCause<'tcx>
impl<'tcx> !Send for ObligationCause<'tcx>
impl<'tcx> !Sync for ObligationCause<'tcx>
impl<'tcx> Unpin for ObligationCause<'tcx>
impl<'tcx> !UnwindSafe for ObligationCause<'tcx>
Blanket Implementations
Mutably borrows from an owned value. Read more
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: 8 bytes