What’s the current state regarding order of evaluation? It is very tempting to write this:
struct Item {
a: u32,
b: u32,
}
impl Item {
fn receive_word(&mut self) -> Result<u32, Error> {
…
}
fn receive(&mut self) -> Result<Item, Error> {
Ok(Item {
a: self.receive_word()?,
b: self.receive_word()?,
})
}
}
The expectation is that first the value a is received, then the value b. But with a non-determinate evaluation order, one has to introduce temporaries.