pub struct Handle<T> { /* private fields */ }Expand description
A handle to an object stored within [Shape]
If an object of type T (this could be Curve, Vertex, etc.) is added to
Shape, a Handle<T> is returned. This handle is then used in topological
types to refer to the object, instead of having those types own an instance
of the object.
This approach has two advantages:
- The object can’t be mutated through the handle. Since an object can be
referred to by multiple other objects, mutating it locally would have no
effect on those other references.
Handlepreventing that removes this source of errors. - The object is guaranteed to be in
Shape, asHandles can’t be created any other way. This means that if theShapeneeds to be modified, any objects can be updated once, without requiring an update of all the other objects that reference it.
Equality
The equality of Handle is very strictly defined in terms of identity.
Two Handles are considered equal, if they refer to objects in the same
memory location.
Implementations
Trait Implementations
sourceimpl<T: Ord> Ord for Handle<T>
impl<T: Ord> Ord for Handle<T>
sourceimpl<T: PartialOrd> PartialOrd<Handle<T>> for Handle<T>
impl<T: PartialOrd> PartialOrd<Handle<T>> for Handle<T>
sourcefn partial_cmp(&self, other: &Handle<T>) -> Option<Ordering>
fn partial_cmp(&self, other: &Handle<T>) -> Option<Ordering>
This method returns an ordering between self and other values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl<T: Eq> Eq for Handle<T>
impl<T> StructuralEq for Handle<T>
impl<T> StructuralPartialEq for Handle<T>
Auto Trait Implementations
impl<T> !RefUnwindSafe for Handle<T>
impl<T> Send for Handle<T> where
T: Send + Sync,
impl<T> Sync for Handle<T> where
T: Send + Sync,
impl<T> Unpin for Handle<T>
impl<T> !UnwindSafe for Handle<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s. Read more
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s. Read more
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self from the equivalent element of its
superset. Read more
fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if self is actually part of its subset T (and can be converted to it).
fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset but without any property checks. Always succeeds.
fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts self to the equivalent element of its superset.
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. Read more