fn deref(&self, mut x: Int) -> Int {
    while is_var(x) {
      let r = self.get_ref(x);
      if r == x {
        break;
      }
      x = r
    }
    x
  }
/**
  * scans reference chains starting from a variable
  * until it points to an unbound root variable or some
  * non-variable cell
  */
scans reference chains starting from a variable
until it points to an unbound root variable or some
non-variable cell
scans reference chains starting from a variable until it points to an unbound root variable or some non - variable cell
fn deref(&self, mut x: Int) -> Int {
    while is_var(x) {
      let r = self.get_ref(x);
      if r == x {
        break;
      }
      x = r
    }
    x
  }
fn deref ( & self , mut x : Int ) -> Int { while is_var ( x ) { let r = self . get_ref ( x ) ; if r == x { break ; } x = r } x }
scans reference chains starting from a variable
 until it points to an unbound root variable or some
 non-variable cell
scans reference chains starting from a variable until it points to an unbound root variable or some non - variable cell
&self
x
Int
&self
x
Int