This Rust code works:
let a = self.stack.pop_or_err()?;
let b = self.stack.pop_or_err()?;
self.stack.push(a * b);
(The ?s are unimportant, just an application detail.)
If i turn it into:
self.stack.push(self.stack.pop_or_err()? * self.stack.pop_or_err()?);
the I see:
error[E0499]: cannot borrow `self.stack` as mutable more than once at a time
   --> src/question2.rs:121:33
    |
121 |                 self.stack.push(self.stack.pop_or_err()? + self.stack.pop_or_err()?);
    |                 ----------------^^^^^^^^^^^^^^^^^^^^^^^-----------------------------
    |                 |          |    |
    |                 |          |    second mutable borrow occurs here
    |                 |          first borrow later used by call
    |                 first mutable borrow occurs here
error[E0499]: cannot borrow `self.stack` as mutable more than once at a time
   --> src/question2.rs:121:60
    |
121 |                 self.stack.push(self.stack.pop_or_err()? + self.stack.pop_or_err()?);
    |                 -------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^--
    |                 |          |                               |
    |                 |          |                               second mutable borrow occurs here
    |                 |          first borrow later used by call
    |                 first mutable borrow occurs here
Is there a one-line form of calling a method on a mut reference which uses the reference in arguments in the method call?