pub fn unify<T>(&mut self, environment: &Arc<Environment>, a: &T, b: &T) -> Result<()>
        where T: ?Sized + Zip + Debug
    {
        let UnificationResult { goals, constraints } =
            self.infer.unify(environment, a, b)?;
        debug!("unify({:?}, {:?}) succeeded", a, b);
        debug!("unify: goals={:?}", goals);
        debug!("unify: constraints={:?}", constraints);
        self.constraints.extend(constraints);
        self.obligations.extend(goals.into_iter().casted().map(Obligation::Prove));
        Ok(())
    }
/// Unifies `a` and `b` in the given environment.
///
/// Wraps `InferenceTable::unify`; any resulting normalizations are added
/// into our list of pending obligations with the given environment.
Unifies `a` and `b` in the given environment.
Wraps `InferenceTable::unify`; any resulting normalizations are added
into our list of pending obligations with the given environment.
Unifies ` a ` and ` b ` in the given environment . Wraps ` InferenceTable :: unify ` ; any resulting normalizations are added into our list of pending obligations with the given environment .
pub fn unify<T>(&mut self, environment: &Arc<Environment>, a: &T, b: &T) -> Result<()>
        where T: ?Sized + Zip + Debug
    {
        let UnificationResult { goals, constraints } =
            self.infer.unify(environment, a, b)?;
        debug!("unify({:?}, {:?}) succeeded", a, b);
        debug!("unify: goals={:?}", goals);
        debug!("unify: constraints={:?}", constraints);
        self.constraints.extend(constraints);
        self.obligations.extend(goals.into_iter().casted().map(Obligation::Prove));
        Ok(())
    }
pub fn unify < T > ( & mut self , environment : & Arc < Environment > , a : & T , b : & T ) -> Result < ( ) > where T : ? Sized + Zip + Debug { let UnificationResult { goals , constraints } = self . infer . unify ( environment , a , b ) ? ; debug ! ( " " a b ) ; debug ! ( " " goals ) ; debug ! ( " " constraints ) ; self . constraints . extend ( constraints ) ; self . obligations . extend ( goals . into_iter ( ) . casted ( ) . map ( Obligation :: Prove ) ) ; Ok ( ( ) ) }
Unifies `a` and `b` in the given environment.
Unifies ` a ` and ` b ` in the given environment .
&mut self
environment
&Arc<Environment>
a
&T
b
&T