pub trait Combine<'tcx> {
fn infcx(&'a self) -> &'a InferCtxt<'a, 'tcx>;
fn tag(&self) -> String;
fn a_is_expected(&self) -> bool;
fn trace(&self) -> TypeTrace<'tcx>;
fn equate(&'a self) -> Equate<'a, 'tcx>;
fn sub(&'a self) -> Sub<'a, 'tcx>;
fn lub(&'a self) -> Lub<'a, 'tcx>;
fn glb(&'a self) -> Glb<'a, 'tcx>;
fn mts(&self, a: &mt<'tcx>, b: &mt<'tcx>) -> Result<mt<'tcx>, type_err<'tcx>>;
fn contratys(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>>;
fn tys(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>>;
fn unsafeties(&self, a: Unsafety, b: Unsafety) -> Result<Unsafety, type_err<'tcx>>;
fn oncenesses(&self, a: Onceness, b: Onceness) -> Result<Onceness, type_err<'tcx>>;
fn builtin_bounds(&self, a: EnumSet<BuiltinBound>, b: EnumSet<BuiltinBound>) -> Result<EnumSet<BuiltinBound>, type_err<'tcx>>;
fn contraregions(&self, a: Region, b: Region) -> Result<Region, type_err<'tcx>>;
fn regions(&self, a: Region, b: Region) -> Result<Region, type_err<'tcx>>;
fn binders<T>(&self, a: &Binder<T>, b: &Binder<T>) -> Result<Binder<T>, type_err<'tcx>>;
fn tcx(&'a self) -> &'a ctxt<'tcx> { ... }
fn tps(&self, ParamSpace, as_: &[&'tcx TyS<'tcx>], bs: &[&'tcx TyS<'tcx>]) -> Result<Vec<&'tcx TyS<'tcx>>, type_err<'tcx>> { ... }
fn substs(&self, item_def_id: DefId, a_subst: &Substs<'tcx>, b_subst: &Substs<'tcx>) -> Result<Substs<'tcx>, type_err<'tcx>> { ... }
fn substs_variances(&self, variances: Option<&ItemVariances>, a_subst: &Substs<'tcx>, b_subst: &Substs<'tcx>) -> Result<Substs<'tcx>, type_err<'tcx>> { ... }
fn bare_fn_tys(&self, a: &BareFnTy<'tcx>, b: &BareFnTy<'tcx>) -> Result<BareFnTy<'tcx>, type_err<'tcx>> { ... }
fn closure_tys(&self, a: &ClosureTy<'tcx>, b: &ClosureTy<'tcx>) -> Result<ClosureTy<'tcx>, type_err<'tcx>> { ... }
fn fn_sigs(&self, a: &FnSig<'tcx>, b: &FnSig<'tcx>) -> Result<FnSig<'tcx>, type_err<'tcx>> { ... }
fn args(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>> { ... }
fn abi(&self, a: Abi, b: Abi) -> Result<Abi, type_err<'tcx>> { ... }
fn projection_tys(&self, a: &ProjectionTy<'tcx>, b: &ProjectionTy<'tcx>) -> Result<ProjectionTy<'tcx>, type_err<'tcx>> { ... }
fn projection_predicates(&self, a: &ProjectionPredicate<'tcx>, b: &ProjectionPredicate<'tcx>) -> Result<ProjectionPredicate<'tcx>, type_err<'tcx>> { ... }
fn projection_bounds(&self, a: &Vec<Binder<ProjectionPredicate<'tcx>>>, b: &Vec<Binder<ProjectionPredicate<'tcx>>>) -> Result<Vec<Binder<ProjectionPredicate<'tcx>>>, type_err<'tcx>> { ... }
fn existential_bounds(&self, a: &ExistentialBounds<'tcx>, b: &ExistentialBounds<'tcx>) -> Result<ExistentialBounds<'tcx>, type_err<'tcx>> { ... }
fn trait_stores(&self, vk: terr_vstore_kind, a: TraitStore, b: TraitStore) -> Result<TraitStore, type_err<'tcx>> { ... }
fn trait_refs(&self, a: &TraitRef<'tcx>, b: &TraitRef<'tcx>) -> Result<TraitRef<'tcx>, type_err<'tcx>> { ... }
}
Required Methods
fn infcx(&'a self) -> &'a InferCtxt<'a, 'tcx>
fn equate(&'a self) -> Equate<'a, 'tcx>
fn sub(&'a self) -> Sub<'a, 'tcx>
fn lub(&'a self) -> Lub<'a, 'tcx>
fn glb(&'a self) -> Glb<'a, 'tcx>
fn mts(&self, a: &mt<'tcx>, b: &mt<'tcx>) -> Result<mt<'tcx>, type_err<'tcx>>
fn contratys(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>>
fn tys(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>>
Provided Methods
Implementors