#[non_exhaustive]pub struct MagnetSnap {
pub from: MagnetId,
pub to: MagnetId,
pub snap_vector: Vec2,
pub payload: Option<Rc<dyn Any>>,
pub distance: f32,
}Expand description
The chosen snap when a dragged item’s magnet aligns onto another
item’s magnet. Returned by
Scene::compute_item_snap.
A heavyweight consumer that drives its own drag uses snap_vector to
place the item so from lands on to, and resolves from / to
via Scene::magnet to build the connection
for its own on_connect.
#[non_exhaustive]: the crate hands this to consumer code — a
heavyweight consumer driving its own drag reads it. Build one with
new.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.from: MagnetIdThe dragged item’s magnet that is snapping.
to: MagnetIdThe stationary magnet it snaps onto.
snap_vector: Vec2Add this to the drag delta (or the item’s position) so from’s
scene position coincides with to’s.
payload: Option<Rc<dyn Any>>The accepting verdict’s payload, if any.
distance: f32Scene-space distance between the pair before snapping (the tie-break used to pick the closest accepting pair).
Implementations§
Source§impl MagnetSnap
impl MagnetSnap
Trait Implementations§
Source§impl Clone for MagnetSnap
impl Clone for MagnetSnap
Source§fn clone(&self) -> MagnetSnap
fn clone(&self) -> MagnetSnap
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for MagnetSnap
impl !Send for MagnetSnap
impl !Sync for MagnetSnap
impl !UnwindSafe for MagnetSnap
impl Freeze for MagnetSnap
impl Unpin for MagnetSnap
impl UnsafeUnpin for MagnetSnap
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more