Type Alias rustc_infer::traits::Selection

source ·
pub type Selection<'tcx> = ImplSource<'tcx, PredicateObligation<'tcx>>;

Aliased Type§

enum Selection<'tcx> {
    UserDefined(ImplSourceUserDefinedData<'tcx, Obligation<'tcx, Predicate<'tcx>>>),
    Param(Vec<Obligation<'tcx, Predicate<'tcx>>>),
    Builtin(BuiltinImplSource, Vec<Obligation<'tcx, Predicate<'tcx>>>),



UserDefined(ImplSourceUserDefinedData<'tcx, Obligation<'tcx, Predicate<'tcx>>>)

ImplSource identifying a particular impl.


Param(Vec<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, Vec<Obligation<'tcx, Predicate<'tcx>>>)

Successful resolution for a builtin impl.


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: 48 bytes

Size for each variant:

  • UserDefined: 40 bytes
  • Param: 24 bytes
  • Builtin: 40 bytes