I guess we could benefit from some help messages pointing out instances of &'a mut Foo<'a> types (mutable reference to type containing another instance of the same lifetime argument as the reference) as “problematic” or even “probably wrong” when they are causing problems at the call-site? IDK, the “when they are causing problems” might be tricky though… I have never looked into borrow checking implementation yet.
I don't know, but my thought of running before borrowck is that it could flag &'a mut Foo<'a> as a code smell -- not sure if that will be noisy for legitimate uses though.