Trait weak_table::traits::WeakElement
[−]
[src]
pub trait WeakElement {
type Strong;
fn new(view: &Self::Strong) -> Self;
fn view(&self) -> Option<Self::Strong>;
fn is_expired(&self) -> bool { ... }
fn clone(view: &Self::Strong) -> Self::Strong
where
Self: Sized,
{ ... }
}Interface for elements that can be stored in weak hash tables.
This trait applies to the weak version of a reference-counted pointer; it can be used to
convert a weak pointer into a strong pointer and back. For example, the impl for
std::rc::Weak<T> defines the Strong associated type as std::rc::Rc<T>. Then method
new can be used to downgrade an Rc<T> to a Weak<T>, and method view can be used to
upgrade a Weak<T> into an Rc<T>, if it's still alive. If we think of the weak pointer as
what is stored, then the strong pointer is a temporary view of it.
Associated Types
type Strong
The type at which a weak element can be viewed.
For example, for std::rc::Weak<T>, this will be std::rc::Rc<T>.
Required Methods
fn new(view: &Self::Strong) -> Self
Constructs a weak pointer from a strong pointer.
This is usually implemented by a downgrade method.
fn view(&self) -> Option<Self::Strong>
Acquires a strong pointer from a weak pointer.
This is usually implemented by an upgrade method.
Provided Methods
fn is_expired(&self) -> bool
Is the given weak element expired?
The default implemention checks whether a strong pointer can be obtained via view.
fn clone(view: &Self::Strong) -> Self::Strong where
Self: Sized,
Self: Sized,
Clones a strong pointer.
The default implementation uses new and view; you should override it.