This spreads out transitively to many places and requires that
we use `check_call!` instead of `check_one_call` in a number of
places.
(cherry picked from commit 6bc31dcf206518a7be7f0ac6e773d5dfe25531ea)
> I couldn't figure out a way to use () for the function call, but I didn't try that hard.
I (Robert) have also given it a shot, briefly, unsuccessfully.
While I was critical of over-engineering this, it turns out that
when we start to use `mut`, a macro is much more practical, because
it doesn't create a new scope where we need a copy of a mutable
reference, which of course is not allowed.
(cherry picked from commit a2acc93d13991da4b14a99065acd589477334d07)
The mutation-based methods had some pitfalls, and we don't really
need them.
We could re-add them if we need to.
(cherry picked from commit ca92b8491d87cebf54dd2468599168fc7a16c07f)
This makes it easier to stick to a regular pattern and not forget
to check the context afterwards.
(cherry picked from commit 966ef3769a23075f5d660a48cf5a7307df925dbf)