Is there any particular reason why the type signature of Rc::downgrade doesn't use &self and instead this: &Self as parameter?
To avoid Naming pollution when derefing? But why does Weak then use Weak::upgrade(&self) instead of Weak::upgrade(this: &Self)