ISTM that the transformation that #rust does to bodies of async functions to split them into pieces-between-await-calls requires unsafe blocks (if we hold a ref from one block to another, the ref remains valid only by virtue of !Unpin around its target and so we start relying on things that cannot be expressed in the type/lifetime system for safety).
Is there a macro library/something that would allow me to do something similar _without writing unsafe myself_?