usecrate::shared::AnySharedPointer;/// Trait for a weak pointer
pubtraitAnyWeakPointer<T: ?Sized>: Sized {/// Corresponding shared pointer type
typeShared:AnySharedPointer<T>;/// Return `self` upgraded to a shared pointer, or `None` if unsuccessful.
fnupgrade(&self)->Option<Self::Shared>;}/// Unwrapped return type for the `upgrade` function of the [`AnyWeakPointer<T>`] type `P`
pubtypeUpgraded<P, T>=<P asAnyWeakPointer<T>>::Shared;