pub type Selection<'tcx> = ImplSource<'tcx, PredicateObligation<'tcx>>;
Aliased Type§
enum Selection<'tcx> {
UserDefined(ImplSourceUserDefinedData<'tcx, Obligation<'tcx, Predicate<'tcx>>>),
Param(ThinVec<Obligation<'tcx, Predicate<'tcx>>>),
Builtin(BuiltinImplSource, ThinVec<Obligation<'tcx, Predicate<'tcx>>>),
}
Variants§
UserDefined(ImplSourceUserDefinedData<'tcx, Obligation<'tcx, Predicate<'tcx>>>)
ImplSource identifying a particular impl.
Param(ThinVec<Obligation<'tcx, Predicate<'tcx>>>)
Successful resolution to an obligation provided by the caller
for some type parameter. The Vec<N>
represents the
obligations incurred from normalizing the where-clause (if
any).
Builtin(BuiltinImplSource, ThinVec<Obligation<'tcx, Predicate<'tcx>>>)
Successful resolution for a builtin impl.
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: 32 bytes
Size for each variant:
UserDefined
: 24 bytesParam
: 8 bytesBuiltin
: 24 bytes