Earlier quoted context omitted.
> safe from a pinning perspective The reason you can't get &mut T from Pin > is because the mutable reference lets you move the data in safe Rust, e.g. with std::mem::swap. So getting the &mut T from a Pin > is not safe from a pinning perspective.
Fair, but feels like that significantly reduces the utility of pinned types then if for certain values you lose the ability to mutate values when the compiler overwise knows that there is a single mutable reference.
pub fn get_mut_pinned(this: &mut Pin>) -> Option>
, which for pinning-aware values should give you enough mutability and for `T: Unpin` can give you `Option` through `Option::as_deref_mut`. Unfortunately, I haven't seen any `Arc` implementations that actually provide it, since almost none of the third-party ones are pinning-aware. (My `tiptoe::Arc`'s `get_mut` has this signature, but that's a specialty container with additional requirements for the contained value.)
The same goes for `make_mut_pinned`, that's missing too (but to be fair would be much less useful, since pinning and `Clone` don't often mix that well).