Rust expression order of evaluation

Even with temporaries, it doesn’t look too bad in my opinion:

    fn receive(&mut self) -> Result<Item, Error> {
        let a = self.receive_word()?;
        let b = self.receive_word()?;
        Ok(Item { a, b })
    }