No, you're not. You just have to handle the case of not having heap memory to spare. If you were out of _stack_ space, now that's being screwed.
> and Rust's choice here is fine
Of course it's fine - for a language that doesn't claim to be safe. So, for Rust, it is not fine.
> any imagined recovery is a fantasy
That is the attitude of people who write non-critical applications where it's ok to be lazy and just let the process die and restart things.
It is not fantasy, it is not imaginary, and it is quite doable (except in corner cases of tiny machines for which 4 KB is a lot, in which case you would probably not do dynamic memory management on a heap anyway).