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