#[repr(C)]pub struct DVec2 {
pub x: f64,
pub y: f64,
}
Expand description
A 2-dimensional vector.
Fields§
§x: f64
§y: f64
Implementations§
source§impl DVec2
impl DVec2
sourcepub const NEG_INFINITY: DVec2 = _
pub const NEG_INFINITY: DVec2 = _
All f64::NEG_INFINITY
.
sourcepub fn map<F>(self, f: F) -> DVec2
pub fn map<F>(self, f: F) -> DVec2
Returns a vector containing each element of self
modified by a mapping function f
.
sourcepub fn select(mask: BVec2, if_true: DVec2, if_false: DVec2) -> DVec2
pub fn select(mask: BVec2, if_true: DVec2, if_false: DVec2) -> DVec2
Creates a vector from the elements in if_true
and if_false
, selecting which to use
for each element of self
.
A true element in the mask uses the corresponding element from if_true
, and false
uses the element from if_false
.
sourcepub const fn from_array(a: [f64; 2]) -> DVec2
pub const fn from_array(a: [f64; 2]) -> DVec2
Creates a new vector from an array.
sourcepub const fn from_slice(slice: &[f64]) -> DVec2
pub const fn from_slice(slice: &[f64]) -> DVec2
Creates a vector from the first 2 values in slice
.
§Panics
Panics if slice
is less than 2 elements long.
sourcepub fn write_to_slice(self, slice: &mut [f64])
pub fn write_to_slice(self, slice: &mut [f64])
Writes the elements of self
to the first 2 elements in slice
.
§Panics
Panics if slice
is less than 2 elements long.
sourcepub const fn extend(self, z: f64) -> DVec3
pub const fn extend(self, z: f64) -> DVec3
Creates a 3D vector from self
and the given z
value.
sourcepub fn dot_into_vec(self, rhs: DVec2) -> DVec2
pub fn dot_into_vec(self, rhs: DVec2) -> DVec2
Returns a vector where every component is the dot product of self
and rhs
.
sourcepub fn min(self, rhs: DVec2) -> DVec2
pub fn min(self, rhs: DVec2) -> DVec2
Returns a vector containing the minimum values for each element of self
and rhs
.
In other words this computes [self.x.min(rhs.x), self.y.min(rhs.y), ..]
.
sourcepub fn max(self, rhs: DVec2) -> DVec2
pub fn max(self, rhs: DVec2) -> DVec2
Returns a vector containing the maximum values for each element of self
and rhs
.
In other words this computes [self.x.max(rhs.x), self.y.max(rhs.y), ..]
.
sourcepub fn clamp(self, min: DVec2, max: DVec2) -> DVec2
pub fn clamp(self, min: DVec2, max: DVec2) -> DVec2
Component-wise clamping of values, similar to f64::clamp
.
Each element in min
must be less-or-equal to the corresponding element in max
.
§Panics
Will panic if min
is greater than max
when glam_assert
is enabled.
sourcepub fn min_element(self) -> f64
pub fn min_element(self) -> f64
Returns the horizontal minimum of self
.
In other words this computes min(x, y, ..)
.
sourcepub fn max_element(self) -> f64
pub fn max_element(self) -> f64
Returns the horizontal maximum of self
.
In other words this computes max(x, y, ..)
.
sourcepub fn element_sum(self) -> f64
pub fn element_sum(self) -> f64
Returns the sum of all elements of self
.
In other words, this computes self.x + self.y + ..
.
sourcepub fn element_product(self) -> f64
pub fn element_product(self) -> f64
Returns the product of all elements of self
.
In other words, this computes self.x * self.y * ..
.
sourcepub fn cmpeq(self, rhs: DVec2) -> BVec2
pub fn cmpeq(self, rhs: DVec2) -> BVec2
Returns a vector mask containing the result of a ==
comparison for each element of
self
and rhs
.
In other words, this computes [self.x == rhs.x, self.y == rhs.y, ..]
for all
elements.
sourcepub fn cmpne(self, rhs: DVec2) -> BVec2
pub fn cmpne(self, rhs: DVec2) -> BVec2
Returns a vector mask containing the result of a !=
comparison for each element of
self
and rhs
.
In other words this computes [self.x != rhs.x, self.y != rhs.y, ..]
for all
elements.
sourcepub fn cmpge(self, rhs: DVec2) -> BVec2
pub fn cmpge(self, rhs: DVec2) -> BVec2
Returns a vector mask containing the result of a >=
comparison for each element of
self
and rhs
.
In other words this computes [self.x >= rhs.x, self.y >= rhs.y, ..]
for all
elements.
sourcepub fn cmpgt(self, rhs: DVec2) -> BVec2
pub fn cmpgt(self, rhs: DVec2) -> BVec2
Returns a vector mask containing the result of a >
comparison for each element of
self
and rhs
.
In other words this computes [self.x > rhs.x, self.y > rhs.y, ..]
for all
elements.
sourcepub fn cmple(self, rhs: DVec2) -> BVec2
pub fn cmple(self, rhs: DVec2) -> BVec2
Returns a vector mask containing the result of a <=
comparison for each element of
self
and rhs
.
In other words this computes [self.x <= rhs.x, self.y <= rhs.y, ..]
for all
elements.
sourcepub fn cmplt(self, rhs: DVec2) -> BVec2
pub fn cmplt(self, rhs: DVec2) -> BVec2
Returns a vector mask containing the result of a <
comparison for each element of
self
and rhs
.
In other words this computes [self.x < rhs.x, self.y < rhs.y, ..]
for all
elements.
sourcepub fn abs(self) -> DVec2
pub fn abs(self) -> DVec2
Returns a vector containing the absolute value of each element of self
.
sourcepub fn signum(self) -> DVec2
pub fn signum(self) -> DVec2
Returns a vector with elements representing the sign of self
.
1.0
if the number is positive,+0.0
orINFINITY
-1.0
if the number is negative,-0.0
orNEG_INFINITY
NAN
if the number isNAN
sourcepub fn copysign(self, rhs: DVec2) -> DVec2
pub fn copysign(self, rhs: DVec2) -> DVec2
Returns a vector with signs of rhs
and the magnitudes of self
.
sourcepub fn is_negative_bitmask(self) -> u32
pub fn is_negative_bitmask(self) -> u32
Returns a bitmask with the lowest 2 bits set to the sign bits from the elements of self
.
A negative element results in a 1
bit and a positive element in a 0
bit. Element x
goes
into the first lowest bit, element y
into the second, etc.
sourcepub fn is_finite(self) -> bool
pub fn is_finite(self) -> bool
Returns true
if, and only if, all elements are finite. If any element is either
NaN
, positive or negative infinity, this will return false
.
sourcepub fn is_finite_mask(self) -> BVec2
pub fn is_finite_mask(self) -> BVec2
Performs is_finite
on each element of self, returning a vector mask of the results.
In other words, this computes [x.is_finite(), y.is_finite(), ...]
.
sourcepub fn is_nan_mask(self) -> BVec2
pub fn is_nan_mask(self) -> BVec2
Performs is_nan
on each element of self, returning a vector mask of the results.
In other words, this computes [x.is_nan(), y.is_nan(), ...]
.
sourcepub fn length_squared(self) -> f64
pub fn length_squared(self) -> f64
Computes the squared length of self
.
This is faster than length()
as it avoids a square root operation.
sourcepub fn length_recip(self) -> f64
pub fn length_recip(self) -> f64
Computes 1.0 / length()
.
For valid results, self
must not be of length zero.
sourcepub fn distance(self, rhs: DVec2) -> f64
pub fn distance(self, rhs: DVec2) -> f64
Computes the Euclidean distance between two points in space.
sourcepub fn distance_squared(self, rhs: DVec2) -> f64
pub fn distance_squared(self, rhs: DVec2) -> f64
Compute the squared euclidean distance between two points in space.
sourcepub fn div_euclid(self, rhs: DVec2) -> DVec2
pub fn div_euclid(self, rhs: DVec2) -> DVec2
Returns the element-wise quotient of [Euclidean division] of self
by rhs
.
sourcepub fn rem_euclid(self, rhs: DVec2) -> DVec2
pub fn rem_euclid(self, rhs: DVec2) -> DVec2
Returns the element-wise remainder of Euclidean division of self
by rhs
.
sourcepub fn normalize(self) -> DVec2
pub fn normalize(self) -> DVec2
Returns self
normalized to length 1.0.
For valid results, self
must be finite and not of length zero, nor very close to zero.
See also Self::try_normalize()
and Self::normalize_or_zero()
.
Panics
Will panic if the resulting normalized vector is not finite when glam_assert
is enabled.
sourcepub fn try_normalize(self) -> Option<DVec2>
pub fn try_normalize(self) -> Option<DVec2>
Returns self
normalized to length 1.0 if possible, else returns None
.
In particular, if the input is zero (or very close to zero), or non-finite,
the result of this operation will be None
.
See also Self::normalize_or_zero()
.
sourcepub fn normalize_or(self, fallback: DVec2) -> DVec2
pub fn normalize_or(self, fallback: DVec2) -> DVec2
Returns self
normalized to length 1.0 if possible, else returns a
fallback value.
In particular, if the input is zero (or very close to zero), or non-finite, the result of this operation will be the fallback value.
See also Self::try_normalize()
.
sourcepub fn normalize_or_zero(self) -> DVec2
pub fn normalize_or_zero(self) -> DVec2
Returns self
normalized to length 1.0 if possible, else returns zero.
In particular, if the input is zero (or very close to zero), or non-finite, the result of this operation will be zero.
See also Self::try_normalize()
.
sourcepub fn is_normalized(self) -> bool
pub fn is_normalized(self) -> bool
Returns whether self
is length 1.0
or not.
Uses a precision threshold of approximately 1e-4
.
sourcepub fn project_onto(self, rhs: DVec2) -> DVec2
pub fn project_onto(self, rhs: DVec2) -> DVec2
Returns the vector projection of self
onto rhs
.
rhs
must be of non-zero length.
§Panics
Will panic if rhs
is zero length when glam_assert
is enabled.
sourcepub fn reject_from(self, rhs: DVec2) -> DVec2
pub fn reject_from(self, rhs: DVec2) -> DVec2
Returns the vector rejection of self
from rhs
.
The vector rejection is the vector perpendicular to the projection of self
onto
rhs
, in rhs words the result of self - self.project_onto(rhs)
.
rhs
must be of non-zero length.
§Panics
Will panic if rhs
has a length of zero when glam_assert
is enabled.
sourcepub fn project_onto_normalized(self, rhs: DVec2) -> DVec2
pub fn project_onto_normalized(self, rhs: DVec2) -> DVec2
Returns the vector projection of self
onto rhs
.
rhs
must be normalized.
§Panics
Will panic if rhs
is not normalized when glam_assert
is enabled.
sourcepub fn reject_from_normalized(self, rhs: DVec2) -> DVec2
pub fn reject_from_normalized(self, rhs: DVec2) -> DVec2
Returns the vector rejection of self
from rhs
.
The vector rejection is the vector perpendicular to the projection of self
onto
rhs
, in rhs words the result of self - self.project_onto(rhs)
.
rhs
must be normalized.
§Panics
Will panic if rhs
is not normalized when glam_assert
is enabled.
sourcepub fn round(self) -> DVec2
pub fn round(self) -> DVec2
Returns a vector containing the nearest integer to a number for each element of self
.
Round half-way cases away from 0.0.
sourcepub fn floor(self) -> DVec2
pub fn floor(self) -> DVec2
Returns a vector containing the largest integer less than or equal to a number for each
element of self
.
sourcepub fn ceil(self) -> DVec2
pub fn ceil(self) -> DVec2
Returns a vector containing the smallest integer greater than or equal to a number for
each element of self
.
sourcepub fn trunc(self) -> DVec2
pub fn trunc(self) -> DVec2
Returns a vector containing the integer part each element of self
. This means numbers are
always truncated towards zero.
sourcepub fn fract(self) -> DVec2
pub fn fract(self) -> DVec2
Returns a vector containing the fractional part of the vector as self - self.trunc()
.
Note that this differs from the GLSL implementation of fract
which returns
self - self.floor()
.
Note that this is fast but not precise for large numbers.
sourcepub fn fract_gl(self) -> DVec2
pub fn fract_gl(self) -> DVec2
Returns a vector containing the fractional part of the vector as self - self.floor()
.
Note that this differs from the Rust implementation of fract
which returns
self - self.trunc()
.
Note that this is fast but not precise for large numbers.
sourcepub fn exp(self) -> DVec2
pub fn exp(self) -> DVec2
Returns a vector containing e^self
(the exponential function) for each element of
self
.
sourcepub fn powf(self, n: f64) -> DVec2
pub fn powf(self, n: f64) -> DVec2
Returns a vector containing each element of self
raised to the power of n
.
sourcepub fn recip(self) -> DVec2
pub fn recip(self) -> DVec2
Returns a vector containing the reciprocal 1.0/n
of each element of self
.
sourcepub fn lerp(self, rhs: DVec2, s: f64) -> DVec2
pub fn lerp(self, rhs: DVec2, s: f64) -> DVec2
Performs a linear interpolation between self
and rhs
based on the value s
.
When s
is 0.0
, the result will be equal to self
. When s
is 1.0
, the result
will be equal to rhs
. When s
is outside of range [0, 1]
, the result is linearly
extrapolated.
sourcepub fn move_towards(&self, rhs: DVec2, d: f64) -> DVec2
pub fn move_towards(&self, rhs: DVec2, d: f64) -> DVec2
Moves towards rhs
based on the value d
.
When d
is 0.0
, the result will be equal to self
. When d
is equal to
self.distance(rhs)
, the result will be equal to rhs
. Will not go past rhs
.
sourcepub fn midpoint(self, rhs: DVec2) -> DVec2
pub fn midpoint(self, rhs: DVec2) -> DVec2
Calculates the midpoint between self
and rhs
.
The midpoint is the average of, or halfway point between, two vectors.
a.midpoint(b)
should yield the same result as a.lerp(b, 0.5)
while being slightly cheaper to compute.
sourcepub fn abs_diff_eq(self, rhs: DVec2, max_abs_diff: f64) -> bool
pub fn abs_diff_eq(self, rhs: DVec2, max_abs_diff: f64) -> bool
Returns true if the absolute difference of all elements between self
and rhs
is
less than or equal to max_abs_diff
.
This can be used to compare if two vectors contain similar elements. It works best when
comparing with a known value. The max_abs_diff
that should be used used depends on
the values being compared against.
For more see comparing floating point numbers.
sourcepub fn clamp_length(self, min: f64, max: f64) -> DVec2
pub fn clamp_length(self, min: f64, max: f64) -> DVec2
Returns a vector with a length no less than min
and no more than max
.
§Panics
Will panic if min
is greater than max
, or if either min
or max
is negative, when glam_assert
is enabled.
sourcepub fn clamp_length_max(self, max: f64) -> DVec2
pub fn clamp_length_max(self, max: f64) -> DVec2
Returns a vector with a length no more than max
.
§Panics
Will panic if max
is negative when glam_assert
is enabled.
sourcepub fn clamp_length_min(self, min: f64) -> DVec2
pub fn clamp_length_min(self, min: f64) -> DVec2
Returns a vector with a length no less than min
.
§Panics
Will panic if min
is negative when glam_assert
is enabled.
sourcepub fn mul_add(self, a: DVec2, b: DVec2) -> DVec2
pub fn mul_add(self, a: DVec2, b: DVec2) -> DVec2
Fused multiply-add. Computes (self * a) + b
element-wise with only one rounding
error, yielding a more accurate result than an unfused multiply-add.
Using mul_add
may be more performant than an unfused multiply-add if the target
architecture has a dedicated fma CPU instruction. However, this is not always true,
and will be heavily dependant on designing algorithms with specific target hardware in
mind.
sourcepub fn reflect(self, normal: DVec2) -> DVec2
pub fn reflect(self, normal: DVec2) -> DVec2
Returns the reflection vector for a given incident vector self
and surface normal
normal
.
normal
must be normalized.
§Panics
Will panic if normal
is not normalized when glam_assert
is enabled.
sourcepub fn refract(self, normal: DVec2, eta: f64) -> DVec2
pub fn refract(self, normal: DVec2, eta: f64) -> DVec2
Returns the refraction direction for a given incident vector self
, surface normal
normal
and ratio of indices of refraction, eta
. When total internal reflection occurs,
a zero vector will be returned.
self
and normal
must be normalized.
§Panics
Will panic if self
or normal
is not normalized when glam_assert
is enabled.
sourcepub fn from_angle(angle: f64) -> DVec2
pub fn from_angle(angle: f64) -> DVec2
sourcepub fn to_angle(self) -> f64
pub fn to_angle(self) -> f64
Returns the angle (in radians) of this vector in the range [-π, +π]
.
The input does not need to be a unit vector however it must be non-zero.
pub fn angle_between(self, rhs: DVec2) -> f64
sourcepub fn angle_to(self, rhs: DVec2) -> f64
pub fn angle_to(self, rhs: DVec2) -> f64
Returns the angle of rotation (in radians) from self
to rhs
in the range [-π, +π]
.
The inputs do not need to be unit vectors however they must be non-zero.
sourcepub fn perp_dot(self, rhs: DVec2) -> f64
pub fn perp_dot(self, rhs: DVec2) -> f64
The perpendicular dot product of self
and rhs
.
Also known as the wedge product, 2D cross product, and determinant.
sourcepub fn rotate(self, rhs: DVec2) -> DVec2
pub fn rotate(self, rhs: DVec2) -> DVec2
Returns rhs
rotated by the angle of self
. If self
is normalized,
then this just rotation. This is what you usually want. Otherwise,
it will be like a rotation with a multiplication by self
’s length.
sourcepub fn rotate_towards(&self, rhs: DVec2, max_angle: f64) -> DVec2
pub fn rotate_towards(&self, rhs: DVec2, max_angle: f64) -> DVec2
Rotates towards rhs
up to max_angle
(in radians).
When max_angle
is 0.0
, the result will be equal to self
. When max_angle
is equal to
self.angle_between(rhs)
, the result will be equal to rhs
. If max_angle
is negative,
rotates towards the exact opposite of rhs
. Will not go past the target.
sourcepub fn as_i16vec2(&self) -> I16Vec2
pub fn as_i16vec2(&self) -> I16Vec2
Casts all elements of self
to i16
.
sourcepub fn as_u16vec2(&self) -> U16Vec2
pub fn as_u16vec2(&self) -> U16Vec2
Casts all elements of self
to u16
.
sourcepub fn as_i64vec2(&self) -> I64Vec2
pub fn as_i64vec2(&self) -> I64Vec2
Casts all elements of self
to i64
.
sourcepub fn as_u64vec2(&self) -> U64Vec2
pub fn as_u64vec2(&self) -> U64Vec2
Casts all elements of self
to u64
.
Trait Implementations§
source§impl AddAssign<&DVec2> for DVec2
impl AddAssign<&DVec2> for DVec2
source§fn add_assign(&mut self, rhs: &DVec2)
fn add_assign(&mut self, rhs: &DVec2)
+=
operation. Read moresource§impl AddAssign<&f64> for DVec2
impl AddAssign<&f64> for DVec2
source§fn add_assign(&mut self, rhs: &f64)
fn add_assign(&mut self, rhs: &f64)
+=
operation. Read moresource§impl AddAssign<f64> for DVec2
impl AddAssign<f64> for DVec2
source§fn add_assign(&mut self, rhs: f64)
fn add_assign(&mut self, rhs: f64)
+=
operation. Read moresource§impl AddAssign for DVec2
impl AddAssign for DVec2
source§fn add_assign(&mut self, rhs: DVec2)
fn add_assign(&mut self, rhs: DVec2)
+=
operation. Read moresource§impl DivAssign<&DVec2> for DVec2
impl DivAssign<&DVec2> for DVec2
source§fn div_assign(&mut self, rhs: &DVec2)
fn div_assign(&mut self, rhs: &DVec2)
/=
operation. Read moresource§impl DivAssign<&f64> for DVec2
impl DivAssign<&f64> for DVec2
source§fn div_assign(&mut self, rhs: &f64)
fn div_assign(&mut self, rhs: &f64)
/=
operation. Read moresource§impl DivAssign<f64> for DVec2
impl DivAssign<f64> for DVec2
source§fn div_assign(&mut self, rhs: f64)
fn div_assign(&mut self, rhs: f64)
/=
operation. Read moresource§impl DivAssign for DVec2
impl DivAssign for DVec2
source§fn div_assign(&mut self, rhs: DVec2)
fn div_assign(&mut self, rhs: DVec2)
/=
operation. Read moresource§impl MulAssign<&DVec2> for DVec2
impl MulAssign<&DVec2> for DVec2
source§fn mul_assign(&mut self, rhs: &DVec2)
fn mul_assign(&mut self, rhs: &DVec2)
*=
operation. Read moresource§impl MulAssign<&f64> for DVec2
impl MulAssign<&f64> for DVec2
source§fn mul_assign(&mut self, rhs: &f64)
fn mul_assign(&mut self, rhs: &f64)
*=
operation. Read moresource§impl MulAssign<f64> for DVec2
impl MulAssign<f64> for DVec2
source§fn mul_assign(&mut self, rhs: f64)
fn mul_assign(&mut self, rhs: f64)
*=
operation. Read moresource§impl MulAssign for DVec2
impl MulAssign for DVec2
source§fn mul_assign(&mut self, rhs: DVec2)
fn mul_assign(&mut self, rhs: DVec2)
*=
operation. Read moresource§impl RemAssign<&DVec2> for DVec2
impl RemAssign<&DVec2> for DVec2
source§fn rem_assign(&mut self, rhs: &DVec2)
fn rem_assign(&mut self, rhs: &DVec2)
%=
operation. Read moresource§impl RemAssign<&f64> for DVec2
impl RemAssign<&f64> for DVec2
source§fn rem_assign(&mut self, rhs: &f64)
fn rem_assign(&mut self, rhs: &f64)
%=
operation. Read moresource§impl RemAssign<f64> for DVec2
impl RemAssign<f64> for DVec2
source§fn rem_assign(&mut self, rhs: f64)
fn rem_assign(&mut self, rhs: f64)
%=
operation. Read moresource§impl RemAssign for DVec2
impl RemAssign for DVec2
source§fn rem_assign(&mut self, rhs: DVec2)
fn rem_assign(&mut self, rhs: DVec2)
%=
operation. Read moresource§impl SubAssign<&DVec2> for DVec2
impl SubAssign<&DVec2> for DVec2
source§fn sub_assign(&mut self, rhs: &DVec2)
fn sub_assign(&mut self, rhs: &DVec2)
-=
operation. Read moresource§impl SubAssign<&f64> for DVec2
impl SubAssign<&f64> for DVec2
source§fn sub_assign(&mut self, rhs: &f64)
fn sub_assign(&mut self, rhs: &f64)
-=
operation. Read moresource§impl SubAssign<f64> for DVec2
impl SubAssign<f64> for DVec2
source§fn sub_assign(&mut self, rhs: f64)
fn sub_assign(&mut self, rhs: f64)
-=
operation. Read moresource§impl SubAssign for DVec2
impl SubAssign for DVec2
source§fn sub_assign(&mut self, rhs: DVec2)
fn sub_assign(&mut self, rhs: DVec2)
-=
operation. Read moresource§impl Vec2Swizzles for DVec2
impl Vec2Swizzles for DVec2
type Vec3 = DVec3
type Vec4 = DVec4
fn xx(self) -> DVec2
fn yx(self) -> DVec2
fn yy(self) -> DVec2
fn xxx(self) -> DVec3
fn xxy(self) -> DVec3
fn xyx(self) -> DVec3
fn xyy(self) -> DVec3
fn yxx(self) -> DVec3
fn yxy(self) -> DVec3
fn yyx(self) -> DVec3
fn yyy(self) -> DVec3
fn xxxx(self) -> DVec4
fn xxxy(self) -> DVec4
fn xxyx(self) -> DVec4
fn xxyy(self) -> DVec4
fn xyxx(self) -> DVec4
fn xyxy(self) -> DVec4
fn xyyx(self) -> DVec4
fn xyyy(self) -> DVec4
fn yxxx(self) -> DVec4
fn yxxy(self) -> DVec4
fn yxyx(self) -> DVec4
fn yxyy(self) -> DVec4
fn yyxx(self) -> DVec4
fn yyxy(self) -> DVec4
fn yyyx(self) -> DVec4
fn yyyy(self) -> DVec4
fn xy(self) -> Self
impl Copy for DVec2
impl StructuralPartialEq for DVec2
Auto Trait Implementations§
impl Freeze for DVec2
impl RefUnwindSafe for DVec2
impl Send for DVec2
impl Sync for DVec2
impl Unpin for DVec2
impl UnwindSafe for DVec2
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T> Conv for T
impl<T> Conv for T
§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> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
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) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
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
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.