Struct jumpy::core::physics::rapier::RigidBody

pub struct RigidBody {
Show 16 fields pub(crate) pos: RigidBodyPosition, pub(crate) mprops: RigidBodyMassProps, pub(crate) integrated_vels: RigidBodyVelocity, pub(crate) vels: RigidBodyVelocity, pub(crate) damping: RigidBodyDamping, pub(crate) forces: RigidBodyForces, pub(crate) ccd: RigidBodyCcd, pub(crate) ids: RigidBodyIds, pub(crate) colliders: RigidBodyColliders, pub(crate) activation: RigidBodyActivation, pub(crate) changes: RigidBodyChanges, pub(crate) body_type: RigidBodyType, pub(crate) dominance: RigidBodyDominance, pub(crate) enabled: bool, pub(crate) additional_solver_iterations: usize, pub user_data: u128,
}
Expand description

A rigid body.

To create a new rigid-body, use the RigidBodyBuilder structure.

Fields§

§pos: RigidBodyPosition§mprops: RigidBodyMassProps§integrated_vels: RigidBodyVelocity§vels: RigidBodyVelocity§damping: RigidBodyDamping§forces: RigidBodyForces§ccd: RigidBodyCcd§ids: RigidBodyIds§colliders: RigidBodyColliders§activation: RigidBodyActivation§changes: RigidBodyChanges§body_type: RigidBodyType§dominance: RigidBodyDominance§enabled: bool§additional_solver_iterations: usize§user_data: u128

User-defined data associated to this rigid-body.

Implementations§

§

impl RigidBody

pub fn copy_from(&mut self, other: &RigidBody)

Copy all the characteristics from other to self.

If you have a mutable reference to a rigid-body rigid_body: &mut RigidBody, attempting to assign it a whole new rigid-body instance, e.g., *rigid_body = RigidBodyBuilder::dynamic().build(), will crash due to some internal indices being overwritten. Instead, use rigid_body.copy_from(&RigidBodyBuilder::dynamic().build()).

This method will allow you to set most characteristics of this rigid-body from another rigid-body instance without causing any breakage.

This method cannot be used for editing the list of colliders attached to this rigid-body. Therefore, the list of colliders attached to self won’t be replaced by the one attached to other.

The pose of other will only copied into self if self doesn’t have a parent (if it has a parent, its position is directly controlled by the parent rigid-body).

pub fn additional_solver_iterations(&self) -> usize

Set the additional number of solver iterations run for this rigid-body and everything interacting with it.

See Self::set_additional_solver_iterations for additional information.

pub fn set_additional_solver_iterations(&mut self, additional_iterations: usize)

Set the additional number of solver iterations run for this rigid-body and everything interacting with it.

Increasing this number will help improve simulation accuracy on this rigid-body and every rigid-body interacting directly or indirectly with it (through joints or contacts). This implies a performance hit.

The default value is 0, meaning exactly [IntegrationParameters::num_solver_iterations] will be used as number of solver iterations for this body.

pub fn activation(&self) -> &RigidBodyActivation

The activation status of this rigid-body.

pub fn activation_mut(&mut self) -> &mut RigidBodyActivation

Mutable reference to the activation status of this rigid-body.

pub fn is_enabled(&self) -> bool

Is this rigid-body enabled?

pub fn set_enabled(&mut self, enabled: bool)

Sets whether this rigid-body is enabled or not.

pub fn linear_damping(&self) -> f32

The linear damping coefficient of this rigid-body.

pub fn set_linear_damping(&mut self, damping: f32)

Sets the linear damping coefficient of this rigid-body.

pub fn angular_damping(&self) -> f32

The angular damping coefficient of this rigid-body.

pub fn set_angular_damping(&mut self, damping: f32)

Sets the angular damping coefficient of this rigid-body.

pub fn body_type(&self) -> RigidBodyType

The type of this rigid-body.

pub fn set_body_type(&mut self, status: RigidBodyType, wake_up: bool)

Sets the type of this rigid-body.

pub fn center_of_mass(&self) -> &OPoint<f32, Const<2>>

The world-space center-of-mass of this rigid-body.

pub fn mass_properties(&self) -> &RigidBodyMassProps

The mass-properties of this rigid-body.

pub fn effective_dominance_group(&self) -> i16

The dominance group of this rigid-body.

This method always returns i8::MAX + 1 for non-dynamic rigid-bodies.

pub fn set_locked_axes(&mut self, locked_axes: LockedAxes, wake_up: bool)

Sets the axes along which this rigid-body cannot translate or rotate.

pub fn locked_axes(&self) -> LockedAxes

The axes along which this rigid-body cannot translate or rotate.

pub fn lock_rotations(&mut self, locked: bool, wake_up: bool)

Locks or unlocks all the rotations of this rigid-body.

pub fn set_enabled_rotations( &mut self, allow_rotations_x: bool, allow_rotations_y: bool, allow_rotations_z: bool, wake_up: bool, )

Locks or unlocks rotations of this rigid-body along each cartesian axes.

pub fn restrict_rotations( &mut self, allow_rotations_x: bool, allow_rotations_y: bool, allow_rotations_z: bool, wake_up: bool, )

👎Deprecated: Use set_enabled_rotations instead

Locks or unlocks rotations of this rigid-body along each cartesian axes.

pub fn lock_translations(&mut self, locked: bool, wake_up: bool)

Locks or unlocks all the rotations of this rigid-body.

pub fn set_enabled_translations( &mut self, allow_translation_x: bool, allow_translation_y: bool, wake_up: bool, )

Locks or unlocks rotations of this rigid-body along each cartesian axes.

pub fn restrict_translations( &mut self, allow_translation_x: bool, allow_translation_y: bool, wake_up: bool, )

👎Deprecated: Use set_enabled_translations instead

Locks or unlocks rotations of this rigid-body along each cartesian axes.

pub fn is_translation_locked(&self) -> bool

Are the translations of this rigid-body locked?

pub fn is_rotation_locked(&self) -> bool

Are the rotations of this rigid-body locked?

pub fn enable_ccd(&mut self, enabled: bool)

Enables of disable CCD (Continuous Collision-Detection) for this rigid-body.

CCD prevents tunneling, but may still allow limited interpenetration of colliders.

pub fn is_ccd_enabled(&self) -> bool

Is CCD (continuous collision-detection) enabled for this rigid-body?

pub fn set_soft_ccd_prediction(&mut self, prediction_distance: f32)

Sets the maximum prediction distance Soft Continuous Collision-Detection.

When set to 0, soft-CCD is disabled. Soft-CCD helps prevent tunneling especially of slow-but-thin to moderately fast objects. The soft CCD prediction distance indicates how far in the object’s path the CCD algorithm is allowed to inspect. Large values can impact performance badly by increasing the work needed from the broad-phase.

It is a generally cheaper variant of regular CCD (that can be enabled with RigidBody::enable_ccd since it relies on predictive constraints instead of shape-cast and substeps.

pub fn soft_ccd_prediction(&self) -> f32

The soft-CCD prediction distance for this rigid-body.

See the documentation of RigidBody::set_soft_ccd_prediction for additional details on soft-CCD.

pub fn is_ccd_active(&self) -> bool

Is CCD active for this rigid-body?

The CCD is considered active if the rigid-body is moving at a velocity greater than an automatically-computed threshold.

This is not the same as self.is_ccd_enabled which only checks if CCD is enabled to run for this rigid-body or if it is completely disabled (independently from its velocity).

pub fn recompute_mass_properties_from_colliders( &mut self, colliders: &ColliderSet, )

Recompute the mass-properties of this rigid-bodies based on its currently attached colliders.

pub fn set_additional_mass(&mut self, additional_mass: f32, wake_up: bool)

Sets the rigid-body’s additional mass.

The total angular inertia of the rigid-body will be scaled automatically based on this additional mass. If this scaling effect isn’t desired, use Self::set_additional_mass_properties instead of this method.

This is only the “additional” mass because the total mass of the rigid-body is equal to the sum of this additional mass and the mass computed from the colliders (with non-zero densities) attached to this rigid-body.

That total mass (which includes the attached colliders’ contributions) will be updated at the name physics step, or can be updated manually with Self::recompute_mass_properties_from_colliders.

This will override any previous mass-properties set by Self::set_additional_mass, Self::set_additional_mass_properties, RigidBodyBuilder::additional_mass, or RigidBodyBuilder::additional_mass_properties for this rigid-body.

If wake_up is true then the rigid-body will be woken up if it was put to sleep because it did not move for a while.

pub fn set_additional_mass_properties( &mut self, props: MassProperties, wake_up: bool, )

Sets the rigid-body’s additional mass-properties.

This is only the “additional” mass-properties because the total mass-properties of the rigid-body is equal to the sum of this additional mass-properties and the mass computed from the colliders (with non-zero densities) attached to this rigid-body.

That total mass-properties (which include the attached colliders’ contributions) will be updated at the name physics step, or can be updated manually with Self::recompute_mass_properties_from_colliders.

This will override any previous mass-properties set by Self::set_additional_mass, Self::set_additional_mass_properties, RigidBodyBuilder::additional_mass, or RigidBodyBuilder::additional_mass_properties for this rigid-body.

If wake_up is true then the rigid-body will be woken up if it was put to sleep because it did not move for a while.

pub fn colliders(&self) -> &[ColliderHandle]

The handles of colliders attached to this rigid body.

pub fn is_dynamic(&self) -> bool

Is this rigid body dynamic?

A dynamic body can move freely and is affected by forces.

pub fn is_kinematic(&self) -> bool

Is this rigid body kinematic?

A kinematic body can move freely but is not affected by forces.

pub fn is_fixed(&self) -> bool

Is this rigid body fixed?

A fixed body cannot move and is not affected by forces.

pub fn mass(&self) -> f32

The mass of this rigid body.

Returns zero if this rigid body has an infinite mass.

pub fn next_position(&self) -> &Isometry<f32, Unit<Complex<f32>>, 2>

The predicted position of this rigid-body.

If this rigid-body is kinematic this value is set by the set_next_kinematic_position method and is used for estimating the kinematic body velocity at the next timestep. For non-kinematic bodies, this value is currently unspecified.

pub fn gravity_scale(&self) -> f32

The scale factor applied to the gravity affecting this rigid-body.

pub fn set_gravity_scale(&mut self, scale: f32, wake_up: bool)

Sets the gravity scale facter for this rigid-body.

pub fn dominance_group(&self) -> i8

The dominance group of this rigid-body.

pub fn set_dominance_group(&mut self, dominance: i8)

The dominance group of this rigid-body.

pub fn add_collider( &mut self, co_handle: ColliderHandle, co_parent: &ColliderParent, co_pos: &mut ColliderPosition, co_shape: &SharedShape, co_mprops: &ColliderMassProps, )

Adds a collider to this rigid-body.

pub fn sleep(&mut self)

Put this rigid body to sleep.

A sleeping body no longer moves and is no longer simulated by the physics engine unless it is waken up. It can be woken manually with self.wake_up or automatically due to external forces like contacts.

pub fn wake_up(&mut self, strong: bool)

Wakes up this rigid body if it is sleeping.

If strong is true then it is assured that the rigid-body will remain awake during multiple subsequent timesteps.

pub fn is_sleeping(&self) -> bool

Is this rigid body sleeping?

pub fn is_moving(&self) -> bool

Is the velocity of this body not zero?

pub fn linvel( &self, ) -> &Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>

The linear velocity of this rigid-body.

pub fn angvel(&self) -> f32

The angular velocity of this rigid-body.

pub fn set_linvel( &mut self, linvel: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, wake_up: bool, )

The linear velocity of this rigid-body.

If wake_up is true then the rigid-body will be woken up if it was put to sleep because it did not move for a while.

pub fn set_angvel(&mut self, angvel: f32, wake_up: bool)

The angular velocity of this rigid-body.

If wake_up is true then the rigid-body will be woken up if it was put to sleep because it did not move for a while.

pub fn position(&self) -> &Isometry<f32, Unit<Complex<f32>>, 2>

The world-space position of this rigid-body.

pub fn translation( &self, ) -> &Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>

The translational part of this rigid-body’s position.

pub fn set_translation( &mut self, translation: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, wake_up: bool, )

Sets the translational part of this rigid-body’s position.

pub fn rotation(&self) -> &Unit<Complex<f32>>

The rotational part of this rigid-body’s position.

pub fn set_rotation(&mut self, rotation: Unit<Complex<f32>>, wake_up: bool)

Sets the rotational part of this rigid-body’s position.

pub fn set_position( &mut self, pos: Isometry<f32, Unit<Complex<f32>>, 2>, wake_up: bool, )

Sets the position and next_kinematic_position of this rigid body.

This will teleport the rigid-body to the specified position/orientation, completely ignoring any physics rule. If this body is kinematic, this will also set the next kinematic position to the same value, effectively resetting to zero the next interpolated velocity of the kinematic body.

If wake_up is true then the rigid-body will be woken up if it was put to sleep because it did not move for a while.

pub fn set_next_kinematic_rotation(&mut self, rotation: Unit<Complex<f32>>)

If this rigid body is kinematic, sets its future orientation after the next timestep integration.

pub fn set_next_kinematic_translation( &mut self, translation: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, )

If this rigid body is kinematic, sets its future translation after the next timestep integration.

pub fn set_next_kinematic_position( &mut self, pos: Isometry<f32, Unit<Complex<f32>>, 2>, )

If this rigid body is kinematic, sets its future position (translation and orientation) after the next timestep integration.

pub fn predict_position_using_velocity_and_forces( &self, dt: f32, ) -> Isometry<f32, Unit<Complex<f32>>, 2>

Predicts the next position of this rigid-body, by integrating its velocity and forces by a time of dt.

pub fn predict_position_using_velocity( &self, dt: f32, ) -> Isometry<f32, Unit<Complex<f32>>, 2>

Predicts the next position of this rigid-body, by integrating only its velocity by a time of dt.

The forces that were applied to this rigid-body since the last physics step will be ignored by this function. Use Self::predict_position_using_velocity_and_forces instead to take forces into account.

§

impl RigidBody

§Applying forces and torques

pub fn reset_forces(&mut self, wake_up: bool)

Resets to zero all the constant (linear) forces manually applied to this rigid-body.

pub fn reset_torques(&mut self, wake_up: bool)

Resets to zero all the constant torques manually applied to this rigid-body.

pub fn add_force( &mut self, force: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, wake_up: bool, )

Adds to this rigid-body a constant force applied at its center-of-mass.ç

This does nothing on non-dynamic bodies.

pub fn add_torque(&mut self, torque: f32, wake_up: bool)

Adds to this rigid-body a constant torque at its center-of-mass.

This does nothing on non-dynamic bodies.

pub fn add_force_at_point( &mut self, force: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, point: OPoint<f32, Const<2>>, wake_up: bool, )

Adds to this rigid-body a constant force at the given world-space point of this rigid-body.

This does nothing on non-dynamic bodies.

§

impl RigidBody

§Applying impulses and angular impulses

pub fn apply_impulse( &mut self, impulse: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, wake_up: bool, )

Applies an impulse at the center-of-mass of this rigid-body. The impulse is applied right away, changing the linear velocity. This does nothing on non-dynamic bodies.

pub fn apply_torque_impulse(&mut self, torque_impulse: f32, wake_up: bool)

Applies an angular impulse at the center-of-mass of this rigid-body. The impulse is applied right away, changing the angular velocity. This does nothing on non-dynamic bodies.

pub fn apply_impulse_at_point( &mut self, impulse: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, point: OPoint<f32, Const<2>>, wake_up: bool, )

Applies an impulse at the given world-space point of this rigid-body. The impulse is applied right away, changing the linear and/or angular velocities. This does nothing on non-dynamic bodies.

pub fn user_force( &self, ) -> Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>

Retrieves the constant force(s) that the user has added to the body.

Returns zero if the rigid-body isn’t dynamic.

pub fn user_torque(&self) -> f32

Retrieves the constant torque(s) that the user has added to the body.

Returns zero if the rigid-body isn’t dynamic.

§

impl RigidBody

pub fn velocity_at_point( &self, point: &OPoint<f32, Const<2>>, ) -> Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>

The velocity of the given world-space point on this rigid-body.

pub fn kinetic_energy(&self) -> f32

The kinetic energy of this body.

pub fn gravitational_potential_energy( &self, dt: f32, gravity: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>, ) -> f32

The potential energy of this body in a gravity field.

Trait Implementations§

§

impl Clone for RigidBody

§

fn clone(&self) -> RigidBody

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
§

impl Debug for RigidBody

§

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

Formats the value using the given formatter. Read more
§

impl Default for RigidBody

§

fn default() -> RigidBody

Returns the “default value” for a type. Read more
§

impl From<RigidBodyBuilder> for RigidBody

§

fn from(val: RigidBodyBuilder) -> RigidBody

Converts to this type from the input type.

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
§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U

Return the T [ShaderType] for self. When used in [AsBindGroup] derives, it is safe to assume that all images in self exist.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

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

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

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.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

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

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> FromWorld for T
where T: Default,

§

fn from_world(_world: &mut World) -> T

Creates Self using data from the given [World]
§

impl<T> FromWorld for T
where T: Default,

§

fn from_world(_world: &World) -> T

Creates Self using data from the given World.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

impl<T> IntoArcAny for T
where T: Send + Sync + 'static,

§

fn into_arc_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Casts Arc<Self> into Arc<dyn Any + Send + Sync>.
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

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

§

unsafe fn raw_clone(src: *const c_void, dst: *mut c_void)

Write the default value of the type to the pointer. Read more
§

fn raw_clone_cb() -> Unsafe<&'static (dyn Fn(*const c_void, *mut c_void) + Send + Sync)>

Get a callback suitable for [SchemaData].
§

impl<T> RawDefault for T
where T: Default,

§

unsafe fn raw_default(dst: *mut c_void)

Write the default value of the type to the pointer. Read more
§

fn raw_default_cb() -> Unsafe<&'static (dyn Fn(*mut c_void) + Send + Sync)>

Get a callback suitable for [SchemaData].
§

impl<T> RawDrop for T

§

unsafe fn raw_drop(ptr: *mut c_void)

Write the default value of the type to the pointer. Read more
§

fn raw_drop_cb() -> Unsafe<&'static (dyn Fn(*mut c_void) + Send + Sync)>

Get a callback suitable for [SchemaData].
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<'gc, T> Singleton<'gc> for T
where T: Default,

§

fn create(_: Context<'gc>) -> T

§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

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

Checks if self is actually part of its subset T (and can be converted to it).
§

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

The inclusion map: converts self to the equivalent element of its superset.
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

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

§

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
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

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

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.
§

impl<T> TypeData for T
where T: 'static + Send + Sync + Clone,

§

fn clone_type_data(&self) -> Box<dyn TypeData>

§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

§

impl<T> SerializableAny for T
where T: 'static + Any + Clone + for<'a> Send + Sync,