fn confirm_candidate(&mut self,
                         obligation: &Obligation<'tcx>,
                         candidate: Candidate<'tcx>)
                         -> Result<Selection<'tcx>,SelectionError<'tcx>>
    {
        debug!("confirm_candidate({}, {})",
               obligation.repr(self.tcx()),
               candidate.repr(self.tcx()));

        match candidate {
            BuiltinCandidate(builtin_bound) => {
                Ok(VtableBuiltin(
                    try!(self.confirm_builtin_candidate(obligation, builtin_bound))))
            }

            ErrorCandidate => {
                Ok(VtableBuiltin(VtableBuiltinData { nested: VecPerParamSpace::empty() }))
            }

            ParamCandidate(param) => {
                Ok(VtableParam(
                    try!(self.confirm_param_candidate(obligation, param))))
            }

            ImplCandidate(impl_def_id) => {
                let vtable_impl =
                    try!(self.confirm_impl_candidate(obligation, impl_def_id));
                Ok(VtableImpl(vtable_impl))
            }

            UnboxedClosureCandidate(closure_def_id, substs) => {
                try!(self.confirm_unboxed_closure_candidate(obligation, closure_def_id, &substs));
                Ok(VtableUnboxedClosure(closure_def_id, substs))
            }

            FnPointerCandidate => {
                let fn_type =
                    try!(self.confirm_fn_pointer_candidate(obligation));
                Ok(VtableFnPointer(fn_type))
            }
        }
    }
///////////////////////////////////////////////////////////////////////////
// CONFIRMATION
//
// Confirmation unifies the output type parameters of the trait
// with the values found in the obligation, possibly yielding a
// type error.  See `doc.rs` for more details.
CONFIRMATION
Confirmation unifies the output type parameters of the trait
with the values found in the obligation, possibly yielding a
type error.  See `doc.rs` for more details.
CONFIRMATION Confirmation unifies the output type parameters of the trait with the values found in the obligation possibly yielding a type error . See ` doc . rs ` for more details .
fn confirm_candidate(&mut self,
                         obligation: &Obligation<'tcx>,
                         candidate: Candidate<'tcx>)
                         -> Result<Selection<'tcx>,SelectionError<'tcx>>
    {
        debug!("confirm_candidate({}, {})",
               obligation.repr(self.tcx()),
               candidate.repr(self.tcx()));
        match candidate {
            BuiltinCandidate(builtin_bound) => {
                Ok(VtableBuiltin(
                    try!(self.confirm_builtin_candidate(obligation, builtin_bound))))
            }
            ErrorCandidate => {
                Ok(VtableBuiltin(VtableBuiltinData { nested: VecPerParamSpace::empty() }))
            }
            ParamCandidate(param) => {
                Ok(VtableParam(
                    try!(self.confirm_param_candidate(obligation, param))))
            }
            ImplCandidate(impl_def_id) => {
                let vtable_impl =
                    try!(self.confirm_impl_candidate(obligation, impl_def_id));
                Ok(VtableImpl(vtable_impl))
            }
            UnboxedClosureCandidate(closure_def_id, substs) => {
                try!(self.confirm_unboxed_closure_candidate(obligation, closure_def_id, &substs));
                Ok(VtableUnboxedClosure(closure_def_id, substs))
            }
            FnPointerCandidate => {
                let fn_type =
                    try!(self.confirm_fn_pointer_candidate(obligation));
                Ok(VtableFnPointer(fn_type))
            }
        }
    }
fn confirm_candidate ( & mut self , obligation : & Obligation < ' tcx > , candidate : Candidate < ' tcx > ) -> Result < Selection < ' tcx > , SelectionError < ' tcx > > { debug ! ( " " obligation repr ( self tcx ( ) ) candidate repr ( self tcx ( ) ) ) ; match candidate { BuiltinCandidate ( builtin_bound ) => { Ok ( VtableBuiltin ( try ! ( self confirm_builtin_candidate ( obligation builtin_bound ) ) ) ) } ErrorCandidate => { Ok ( VtableBuiltin ( VtableBuiltinData { nested : VecPerParamSpace :: empty ( ) } ) ) } ParamCandidate ( param ) => { Ok ( VtableParam ( try ! ( self confirm_param_candidate ( obligation param ) ) ) ) } ImplCandidate ( impl_def_id ) => { let vtable_impl = try ! ( self confirm_impl_candidate ( obligation impl_def_id ) ) ; Ok ( VtableImpl ( vtable_impl ) ) } UnboxedClosureCandidate ( closure_def_id , substs ) => { try ! ( self confirm_unboxed_closure_candidate ( obligation closure_def_id substs ) ) ; Ok ( VtableUnboxedClosure ( closure_def_id , substs ) ) } FnPointerCandidate => { let fn_type = try ! ( self confirm_fn_pointer_candidate ( obligation ) ) ; Ok ( VtableFnPointer ( fn_type ) ) } } }
CONFIRMATION
Confirmation unifies the output type parameters of the trait
with the values found in the obligation, possibly yielding a
type error.
CONFIRMATION Confirmation unifies the output type parameters of the trait with the values found in the obligation possibly yielding a type error .
&mut self
obligation
&Obligation<'tcx>
candidate
Candidate<'tcx>