If your method takes &self (or &mut self), that means the function call borrows the entirety of self by definition of the signature. So if something borrows a field of self mutably, you can't call any method that borrows all of self. After all, the signature of pos_ref would allow accessing self.pos_tmp, even if it currently doesn't do that.
Just inline the definition of pos_ref into cur_inc, like this. For longer functions, the proper solution is to explicitly pass a list of fields that they use, instead of being sloppy with the whole of self.
Again, you can extract the non-overlapping fields in a function, you don't have to inline the definition. But your method is so short that in this case, it basically wouldn't have any advantage. For a method that's used a lot more or is more complex, you would of course want to write a function.
Finally, you can resort to runtime borrow checking, by wrapping the mutably borrowed fields in RefCell or Mutex. This allows you to borrow fields only by &, with the actual correct usage of mutable borrows delegated to runtime. This option is usually the least preferable, since it has performance penalties and introduces the possibility of runtime panics, but sometimes it's the best option.