#[repr(transparent)]pub struct Vec3A(pub(crate) __m128);
Expand description
Tuple Fields§
§0: __m128
Implementations§
source§impl Vec3A
impl Vec3A
sourcepub const NEG_INFINITY: Vec3A = _
pub const NEG_INFINITY: Vec3A = _
All f32::NEG_INFINITY
.
sourcepub fn select(mask: BVec3A, if_true: Vec3A, if_false: Vec3A) -> Vec3A
pub fn select(mask: BVec3A, if_true: Vec3A, if_false: Vec3A) -> Vec3A
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: [f32; 3]) -> Vec3A
pub const fn from_array(a: [f32; 3]) -> Vec3A
Creates a new vector from an array.
sourcepub const fn from_slice(slice: &[f32]) -> Vec3A
pub const fn from_slice(slice: &[f32]) -> Vec3A
Creates a vector from the first 3 values in slice
.
§Panics
Panics if slice
is less than 3 elements long.
sourcepub fn write_to_slice(self, slice: &mut [f32])
pub fn write_to_slice(self, slice: &mut [f32])
Writes the elements of self
to the first 3 elements in slice
.
§Panics
Panics if slice
is less than 3 elements long.
sourcepub fn from_vec4(v: Vec4) -> Vec3A
pub fn from_vec4(v: Vec4) -> Vec3A
Creates a Vec3A
from the x
, y
and z
elements of self
discarding w
.
On architectures where SIMD is supported such as SSE2 on x86_64
this conversion is a noop.
sourcepub fn truncate(self) -> Vec2
pub fn truncate(self) -> Vec2
Creates a 2D vector from the x
and y
elements of self
, discarding z
.
Truncation may also be performed by using self.xy()
.
sourcepub fn dot_into_vec(self, rhs: Vec3A) -> Vec3A
pub fn dot_into_vec(self, rhs: Vec3A) -> Vec3A
Returns a vector where every component is the dot product of self
and rhs
.
sourcepub fn min(self, rhs: Vec3A) -> Vec3A
pub fn min(self, rhs: Vec3A) -> Vec3A
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: Vec3A) -> Vec3A
pub fn max(self, rhs: Vec3A) -> Vec3A
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: Vec3A, max: Vec3A) -> Vec3A
pub fn clamp(self, min: Vec3A, max: Vec3A) -> Vec3A
Component-wise clamping of values, similar to f32::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) -> f32
pub fn min_element(self) -> f32
Returns the horizontal minimum of self
.
In other words this computes min(x, y, ..)
.
sourcepub fn max_element(self) -> f32
pub fn max_element(self) -> f32
Returns the horizontal maximum of self
.
In other words this computes max(x, y, ..)
.
sourcepub fn element_sum(self) -> f32
pub fn element_sum(self) -> f32
Returns the sum of all elements of self
.
In other words, this computes self.x + self.y + ..
.
sourcepub fn element_product(self) -> f32
pub fn element_product(self) -> f32
Returns the product of all elements of self
.
In other words, this computes self.x * self.y * ..
.
sourcepub fn cmpeq(self, rhs: Vec3A) -> BVec3A
pub fn cmpeq(self, rhs: Vec3A) -> BVec3A
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: Vec3A) -> BVec3A
pub fn cmpne(self, rhs: Vec3A) -> BVec3A
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: Vec3A) -> BVec3A
pub fn cmpge(self, rhs: Vec3A) -> BVec3A
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: Vec3A) -> BVec3A
pub fn cmpgt(self, rhs: Vec3A) -> BVec3A
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: Vec3A) -> BVec3A
pub fn cmple(self, rhs: Vec3A) -> BVec3A
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: Vec3A) -> BVec3A
pub fn cmplt(self, rhs: Vec3A) -> BVec3A
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) -> Vec3A
pub fn abs(self) -> Vec3A
Returns a vector containing the absolute value of each element of self
.
sourcepub fn signum(self) -> Vec3A
pub fn signum(self) -> Vec3A
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: Vec3A) -> Vec3A
pub fn copysign(self, rhs: Vec3A) -> Vec3A
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 3 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_nan_mask(self) -> BVec3A
pub fn is_nan_mask(self) -> BVec3A
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(), z.is_nan(), w.is_nan()]
.
sourcepub fn length_squared(self) -> f32
pub fn length_squared(self) -> f32
Computes the squared length of self
.
This is faster than length()
as it avoids a square root operation.
sourcepub fn length_recip(self) -> f32
pub fn length_recip(self) -> f32
Computes 1.0 / length()
.
For valid results, self
must not be of length zero.
sourcepub fn distance(self, rhs: Vec3A) -> f32
pub fn distance(self, rhs: Vec3A) -> f32
Computes the Euclidean distance between two points in space.
sourcepub fn distance_squared(self, rhs: Vec3A) -> f32
pub fn distance_squared(self, rhs: Vec3A) -> f32
Compute the squared euclidean distance between two points in space.
sourcepub fn div_euclid(self, rhs: Vec3A) -> Vec3A
pub fn div_euclid(self, rhs: Vec3A) -> Vec3A
Returns the element-wise quotient of [Euclidean division] of self
by rhs
.
sourcepub fn rem_euclid(self, rhs: Vec3A) -> Vec3A
pub fn rem_euclid(self, rhs: Vec3A) -> Vec3A
Returns the element-wise remainder of Euclidean division of self
by rhs
.
sourcepub fn normalize(self) -> Vec3A
pub fn normalize(self) -> Vec3A
Returns self
normalized to length 1.0.
For valid results, self
must not be of length zero, nor very close to zero.
See also Self::try_normalize()
and Self::normalize_or_zero()
.
Panics
Will panic if self
is zero length when glam_assert
is enabled.
sourcepub fn try_normalize(self) -> Option<Vec3A>
pub fn try_normalize(self) -> Option<Vec3A>
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: Vec3A) -> Vec3A
pub fn normalize_or(self, fallback: Vec3A) -> Vec3A
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) -> Vec3A
pub fn normalize_or_zero(self) -> Vec3A
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: Vec3A) -> Vec3A
pub fn project_onto(self, rhs: Vec3A) -> Vec3A
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: Vec3A) -> Vec3A
pub fn reject_from(self, rhs: Vec3A) -> Vec3A
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: Vec3A) -> Vec3A
pub fn project_onto_normalized(self, rhs: Vec3A) -> Vec3A
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: Vec3A) -> Vec3A
pub fn reject_from_normalized(self, rhs: Vec3A) -> Vec3A
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) -> Vec3A
pub fn round(self) -> Vec3A
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) -> Vec3A
pub fn floor(self) -> Vec3A
Returns a vector containing the largest integer less than or equal to a number for each
element of self
.
sourcepub fn ceil(self) -> Vec3A
pub fn ceil(self) -> Vec3A
Returns a vector containing the smallest integer greater than or equal to a number for
each element of self
.
sourcepub fn trunc(self) -> Vec3A
pub fn trunc(self) -> Vec3A
Returns a vector containing the integer part each element of self
. This means numbers are
always truncated towards zero.
sourcepub fn fract(self) -> Vec3A
pub fn fract(self) -> Vec3A
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) -> Vec3A
pub fn fract_gl(self) -> Vec3A
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) -> Vec3A
pub fn exp(self) -> Vec3A
Returns a vector containing e^self
(the exponential function) for each element of
self
.
sourcepub fn powf(self, n: f32) -> Vec3A
pub fn powf(self, n: f32) -> Vec3A
Returns a vector containing each element of self
raised to the power of n
.
sourcepub fn recip(self) -> Vec3A
pub fn recip(self) -> Vec3A
Returns a vector containing the reciprocal 1.0/n
of each element of self
.
sourcepub fn lerp(self, rhs: Vec3A, s: f32) -> Vec3A
pub fn lerp(self, rhs: Vec3A, s: f32) -> Vec3A
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: Vec3A, d: f32) -> Vec3A
pub fn move_towards(&self, rhs: Vec3A, d: f32) -> Vec3A
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: Vec3A) -> Vec3A
pub fn midpoint(self, rhs: Vec3A) -> Vec3A
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: Vec3A, max_abs_diff: f32) -> bool
pub fn abs_diff_eq(self, rhs: Vec3A, max_abs_diff: f32) -> 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: f32, max: f32) -> Vec3A
pub fn clamp_length(self, min: f32, max: f32) -> Vec3A
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: f32) -> Vec3A
pub fn clamp_length_max(self, max: f32) -> Vec3A
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: f32) -> Vec3A
pub fn clamp_length_min(self, min: f32) -> Vec3A
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: Vec3A, b: Vec3A) -> Vec3A
pub fn mul_add(self, a: Vec3A, b: Vec3A) -> Vec3A
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 angle_between(self, rhs: Vec3A) -> f32
pub fn angle_between(self, rhs: Vec3A) -> f32
Returns the angle (in radians) between two vectors in the range [0, +π]
.
The inputs do not need to be unit vectors however they must be non-zero.
sourcepub fn any_orthogonal_vector(&self) -> Vec3A
pub fn any_orthogonal_vector(&self) -> Vec3A
Returns some vector that is orthogonal to the given one.
The input vector must be finite and non-zero.
The output vector is not necessarily unit length. For that use
Self::any_orthonormal_vector()
instead.
sourcepub fn any_orthonormal_vector(&self) -> Vec3A
pub fn any_orthonormal_vector(&self) -> Vec3A
Returns any unit vector that is orthogonal to the given one.
The input vector must be unit length.
§Panics
Will panic if self
is not normalized when glam_assert
is enabled.
sourcepub fn any_orthonormal_pair(&self) -> (Vec3A, Vec3A)
pub fn any_orthonormal_pair(&self) -> (Vec3A, Vec3A)
Given a unit vector return two other vectors that together form an orthonormal basis. That is, all three vectors are orthogonal to each other and are normalized.
§Panics
Will panic if self
is not normalized when glam_assert
is enabled.
sourcepub fn as_i16vec3(&self) -> I16Vec3
pub fn as_i16vec3(&self) -> I16Vec3
Casts all elements of self
to i16
.
sourcepub fn as_u16vec3(&self) -> U16Vec3
pub fn as_u16vec3(&self) -> U16Vec3
Casts all elements of self
to u16
.
sourcepub fn as_i64vec3(&self) -> I64Vec3
pub fn as_i64vec3(&self) -> I64Vec3
Casts all elements of self
to i64
.
sourcepub fn as_u64vec3(&self) -> U64Vec3
pub fn as_u64vec3(&self) -> U64Vec3
Casts all elements of self
to u64
.
Trait Implementations§
source§impl AddAssign<f32> for Vec3A
impl AddAssign<f32> for Vec3A
source§fn add_assign(&mut self, rhs: f32)
fn add_assign(&mut self, rhs: f32)
+=
operation. Read moresource§impl AddAssign for Vec3A
impl AddAssign for Vec3A
source§fn add_assign(&mut self, rhs: Vec3A)
fn add_assign(&mut self, rhs: Vec3A)
+=
operation. Read moresource§impl<'de> Deserialize<'de> for Vec3A
impl<'de> Deserialize<'de> for Vec3A
source§fn deserialize<D>(
deserializer: D
) -> Result<Vec3A, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D
) -> Result<Vec3A, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
source§impl DivAssign<f32> for Vec3A
impl DivAssign<f32> for Vec3A
source§fn div_assign(&mut self, rhs: f32)
fn div_assign(&mut self, rhs: f32)
/=
operation. Read moresource§impl DivAssign for Vec3A
impl DivAssign for Vec3A
source§fn div_assign(&mut self, rhs: Vec3A)
fn div_assign(&mut self, rhs: Vec3A)
/=
operation. Read moresource§impl MulAssign<f32> for Vec3A
impl MulAssign<f32> for Vec3A
source§fn mul_assign(&mut self, rhs: f32)
fn mul_assign(&mut self, rhs: f32)
*=
operation. Read moresource§impl MulAssign for Vec3A
impl MulAssign for Vec3A
source§fn mul_assign(&mut self, rhs: Vec3A)
fn mul_assign(&mut self, rhs: Vec3A)
*=
operation. Read moresource§impl RemAssign<f32> for Vec3A
impl RemAssign<f32> for Vec3A
source§fn rem_assign(&mut self, rhs: f32)
fn rem_assign(&mut self, rhs: f32)
%=
operation. Read moresource§impl RemAssign for Vec3A
impl RemAssign for Vec3A
source§fn rem_assign(&mut self, rhs: Vec3A)
fn rem_assign(&mut self, rhs: Vec3A)
%=
operation. Read moresource§impl Serialize for Vec3A
impl Serialize for Vec3A
source§fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
source§impl SubAssign<f32> for Vec3A
impl SubAssign<f32> for Vec3A
source§fn sub_assign(&mut self, rhs: f32)
fn sub_assign(&mut self, rhs: f32)
-=
operation. Read moresource§impl SubAssign for Vec3A
impl SubAssign for Vec3A
source§fn sub_assign(&mut self, rhs: Vec3A)
fn sub_assign(&mut self, rhs: Vec3A)
-=
operation. Read moresource§impl Vec3Swizzles for Vec3A
impl Vec3Swizzles for Vec3A
type Vec2 = Vec2
type Vec4 = Vec4
fn xx(self) -> Vec2
fn xy(self) -> Vec2
fn xz(self) -> Vec2
fn yx(self) -> Vec2
fn yy(self) -> Vec2
fn yz(self) -> Vec2
fn zx(self) -> Vec2
fn zy(self) -> Vec2
fn zz(self) -> Vec2
fn xxx(self) -> Vec3A
fn xxy(self) -> Vec3A
fn xxz(self) -> Vec3A
fn xyx(self) -> Vec3A
fn xyy(self) -> Vec3A
fn xyz(self) -> Vec3A
fn xzx(self) -> Vec3A
fn xzy(self) -> Vec3A
fn xzz(self) -> Vec3A
fn yxx(self) -> Vec3A
fn yxy(self) -> Vec3A
fn yxz(self) -> Vec3A
fn yyx(self) -> Vec3A
fn yyy(self) -> Vec3A
fn yyz(self) -> Vec3A
fn yzx(self) -> Vec3A
fn yzy(self) -> Vec3A
fn yzz(self) -> Vec3A
fn zxx(self) -> Vec3A
fn zxy(self) -> Vec3A
fn zxz(self) -> Vec3A
fn zyx(self) -> Vec3A
fn zyy(self) -> Vec3A
fn zyz(self) -> Vec3A
fn zzx(self) -> Vec3A
fn zzy(self) -> Vec3A
fn zzz(self) -> Vec3A
fn xxxx(self) -> Vec4
fn xxxy(self) -> Vec4
fn xxxz(self) -> Vec4
fn xxyx(self) -> Vec4
fn xxyy(self) -> Vec4
fn xxyz(self) -> Vec4
fn xxzx(self) -> Vec4
fn xxzy(self) -> Vec4
fn xxzz(self) -> Vec4
fn xyxx(self) -> Vec4
fn xyxy(self) -> Vec4
fn xyxz(self) -> Vec4
fn xyyx(self) -> Vec4
fn xyyy(self) -> Vec4
fn xyyz(self) -> Vec4
fn xyzx(self) -> Vec4
fn xyzy(self) -> Vec4
fn xyzz(self) -> Vec4
fn xzxx(self) -> Vec4
fn xzxy(self) -> Vec4
fn xzxz(self) -> Vec4
fn xzyx(self) -> Vec4
fn xzyy(self) -> Vec4
fn xzyz(self) -> Vec4
fn xzzx(self) -> Vec4
fn xzzy(self) -> Vec4
fn xzzz(self) -> Vec4
fn yxxx(self) -> Vec4
fn yxxy(self) -> Vec4
fn yxxz(self) -> Vec4
fn yxyx(self) -> Vec4
fn yxyy(self) -> Vec4
fn yxyz(self) -> Vec4
fn yxzx(self) -> Vec4
fn yxzy(self) -> Vec4
fn yxzz(self) -> Vec4
fn yyxx(self) -> Vec4
fn yyxy(self) -> Vec4
fn yyxz(self) -> Vec4
fn yyyx(self) -> Vec4
fn yyyy(self) -> Vec4
fn yyyz(self) -> Vec4
fn yyzx(self) -> Vec4
fn yyzy(self) -> Vec4
fn yyzz(self) -> Vec4
fn yzxx(self) -> Vec4
fn yzxy(self) -> Vec4
fn yzxz(self) -> Vec4
fn yzyx(self) -> Vec4
fn yzyy(self) -> Vec4
fn yzyz(self) -> Vec4
fn yzzx(self) -> Vec4
fn yzzy(self) -> Vec4
fn yzzz(self) -> Vec4
fn zxxx(self) -> Vec4
fn zxxy(self) -> Vec4
fn zxxz(self) -> Vec4
fn zxyx(self) -> Vec4
fn zxyy(self) -> Vec4
fn zxyz(self) -> Vec4
fn zxzx(self) -> Vec4
fn zxzy(self) -> Vec4
fn zxzz(self) -> Vec4
fn zyxx(self) -> Vec4
fn zyxy(self) -> Vec4
fn zyxz(self) -> Vec4
fn zyyx(self) -> Vec4
fn zyyy(self) -> Vec4
fn zyyz(self) -> Vec4
fn zyzx(self) -> Vec4
fn zyzy(self) -> Vec4
fn zyzz(self) -> Vec4
fn zzxx(self) -> Vec4
fn zzxy(self) -> Vec4
fn zzxz(self) -> Vec4
fn zzyx(self) -> Vec4
fn zzyy(self) -> Vec4
fn zzyz(self) -> Vec4
fn zzzx(self) -> Vec4
fn zzzy(self) -> Vec4
fn zzzz(self) -> Vec4
impl AnyBitPattern for Vec3A
impl Copy for Vec3A
Auto Trait Implementations§
impl Freeze for Vec3A
impl RefUnwindSafe for Vec3A
impl Send for Vec3A
impl Sync for Vec3A
impl Unpin for Vec3A
impl UnwindSafe for Vec3A
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> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
§type Bits = T
type Bits = T
Self
must have the same layout as the specified Bits
except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern
.§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self
.source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§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> 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>
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 moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request