Skip to main content

Attachment

Enum Attachment 

Source
pub enum Attachment {
    Body(usize),
    World,
}
Expand description

What one side of a pairwise quantity is attached to: a body in the model, or the static world.

§Why this type exists

Contacts, constraints and relative Jacobians all need to express “body i against body j, where j may be the ground”. The engine long spelled that as a plain usize with usize::MAX meaning the world — an in-band sentinel, and a hazardous one: usize::MAX is a perfectly valid-looking index, so a stale or miscomputed index that happens to land on it is silently reinterpreted as “the world” instead of panicking. The failure is not a crash but a contact that quietly stops pushing back on one side.

Attachment makes the two cases distinct at the type level, so the compiler forces every consumer to say which it means. It carries no sentinel and cannot be constructed from a bare index by accident — there is deliberately no From<usize> impl, because that would reintroduce exactly the ambiguity this type removes.

Variants§

§

Body(usize)

A body in the model, by index.

§

World

The static world: infinitely massive, never moves, and contributes no columns to a Jacobian.

Implementations§

Source§

impl Attachment

Source

pub fn body(self) -> Option<usize>

The body index, or None for Attachment::World.

Source

pub fn is_world(self) -> bool

Whether this is the static world.

Trait Implementations§

Source§

impl Clone for Attachment

Source§

fn clone(&self) -> Attachment

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Attachment

Source§

impl Debug for Attachment

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Attachment

Source§

impl Hash for Attachment

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Attachment

Source§

fn eq(&self, other: &Attachment) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Attachment

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.