pub struct SE3 { /* private fields */ }Expand description
SE(3) group element representing rigid body transformations in 3D.
Stored as a flat SVector<f64, 7> = [tx, ty, tz, qw, qx, qy, qz] for
contiguous memory compatible with zero-copy faer views.
Implementations§
Source§impl SE3
impl SE3
Sourcepub const DIM: usize = 3
pub const DIM: usize = 3
Space dimension - dimension of the ambient space that the group acts on
Sourcepub fn identity() -> SE3
pub fn identity() -> SE3
Get the identity element of the group.
Returns the neutral element e such that e ∘ g = g ∘ e = g for any group element g.
Sourcepub fn jacobian_identity() -> Matrix<f64, Const<6>, Const<6>, ArrayStorage<f64, 6, 6>>
pub fn jacobian_identity() -> Matrix<f64, Const<6>, Const<6>, ArrayStorage<f64, 6, 6>>
Get the identity matrix for Jacobians.
Returns the identity matrix in the appropriate dimension for Jacobian computations.
Sourcepub fn new(
translation: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>,
rotation: Unit<Quaternion<f64>>,
) -> SE3
pub fn new( translation: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>, rotation: Unit<Quaternion<f64>>, ) -> SE3
Create a new SE3 element from translation and rotation.
§Arguments
translation- Translation vector [x, y, z]rotation- Unit quaternion representing rotation
Sourcepub fn from_translation_quaternion(
translation: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>,
quaternion: Quaternion<f64>,
) -> SE3
pub fn from_translation_quaternion( translation: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>, quaternion: Quaternion<f64>, ) -> SE3
Create SE3 from translation and raw quaternion (will be normalized).
Sourcepub fn from_translation_euler(
x: f64,
y: f64,
z: f64,
roll: f64,
pitch: f64,
yaw: f64,
) -> SE3
pub fn from_translation_euler( x: f64, y: f64, z: f64, roll: f64, pitch: f64, yaw: f64, ) -> SE3
Create SE3 from translation components and Euler angles.
Sourcepub fn from_isometry(isometry: Isometry<f64, Unit<Quaternion<f64>>, 3>) -> SE3
pub fn from_isometry(isometry: Isometry<f64, Unit<Quaternion<f64>>, 3>) -> SE3
Create SE3 directly from an Isometry3.
Sourcepub fn from_translation_so3(
translation: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>,
rotation: SO3,
) -> SE3
pub fn from_translation_so3( translation: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>, rotation: SO3, ) -> SE3
Create SE3 from SO3 and Vector3 components.
Sourcepub fn translation(
&self,
) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
pub fn translation( &self, ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Get the translation part as a Vector3.
Sourcepub fn rotation_so3(&self) -> SO3
pub fn rotation_so3(&self) -> SO3
Get the rotation part as SO3.
Sourcepub fn rotation_quaternion(&self) -> Unit<Quaternion<f64>>
pub fn rotation_quaternion(&self) -> Unit<Quaternion<f64>>
Get the rotation part as a UnitQuaternion.
Sourcepub fn isometry(&self) -> Isometry<f64, Unit<Quaternion<f64>>, 3>
pub fn isometry(&self) -> Isometry<f64, Unit<Quaternion<f64>>, 3>
Get as an Isometry3 (convenience method).
Trait Implementations§
Source§impl LieGroup for SE3
impl LieGroup for SE3
Source§fn compose(
&self,
other: &SE3,
jacobian_self: Option<&mut <SE3 as LieGroup>::JacobianMatrix>,
jacobian_other: Option<&mut <SE3 as LieGroup>::JacobianMatrix>,
) -> SE3
fn compose( &self, other: &SE3, jacobian_self: Option<&mut <SE3 as LieGroup>::JacobianMatrix>, jacobian_other: Option<&mut <SE3 as LieGroup>::JacobianMatrix>, ) -> SE3
Composition of this and another SE3 element.
§Arguments
other- Another SE3 element.jacobian_self- Optional Jacobian matrix of the composition wrt this.jacobian_other- Optional Jacobian matrix of the composition wrt other.
§Notes
§Equation 171: Composition of SE(3) matrices
M_a M_b = [ R_aR_b R_at_b + t_a ] [ 0 1 ]
§Equation 177: Jacobian of the composition wrt self.
J_MaMb_Ma = [ R_bᵀ -R_bᵀ*[t_b]ₓ ]
[ 0 R_bᵀ ]
§Equation 178: Jacobian of the composition wrt other.
J_MaMb_Mb = I_6
Source§fn log(
&self,
jacobian: Option<&mut <SE3 as LieGroup>::JacobianMatrix>,
) -> <SE3 as LieGroup>::TangentVector
fn log( &self, jacobian: Option<&mut <SE3 as LieGroup>::JacobianMatrix>, ) -> <SE3 as LieGroup>::TangentVector
Get the SE3 corresponding Lie algebra element in vector form.
§Arguments
jacobian- Optional Jacobian matrix of the tangent wrt to this.
§Notes
§Equation 173: SE(3) logarithmic map
τ = log(M) = [ V⁻¹(θ) t ] [ Log(R) ]
§Equation 174: V(θ) function for SE(3) Log/Exp maps
V(θ) = I + (1 - cos θ)/θ² [θ]ₓ + (θ - sin θ)/θ³ [θ]ₓ²
Source§fn vee(&self) -> <SE3 as LieGroup>::TangentVector
fn vee(&self) -> <SE3 as LieGroup>::TangentVector
Vee operator: log(g)^∨.
Maps a group element g ∈ G to its tangent vector log(g)^∨ ∈ 𝔤. For SE(3), this is the same as log().
Source§fn is_approx(&self, other: &SE3, tolerance: f64) -> bool
fn is_approx(&self, other: &SE3, tolerance: f64) -> bool
Check if the element is approximately equal to another element.
§Arguments
other- The other element to compare withtolerance- The tolerance for the comparison
Source§type TangentVector = SE3Tangent
type TangentVector = SE3Tangent
Source§type JacobianMatrix = Matrix<f64, Const<6>, Const<6>, ArrayStorage<f64, 6, 6>>
type JacobianMatrix = Matrix<f64, Const<6>, Const<6>, ArrayStorage<f64, 6, 6>>
Source§type LieAlgebra = Matrix<f64, Const<4>, Const<4>, ArrayStorage<f64, 4, 4>>
type LieAlgebra = Matrix<f64, Const<4>, Const<4>, ArrayStorage<f64, 4, 4>>
Source§fn act(
&self,
vector: &Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>,
jacobian_self: Option<&mut <SE3 as LieGroup>::JacobianMatrix>,
jacobian_vector: Option<&mut Matrix<f64, Const<3>, Const<3>, ArrayStorage<f64, 3, 3>>>,
) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
fn act( &self, vector: &Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>, jacobian_self: Option<&mut <SE3 as LieGroup>::JacobianMatrix>, jacobian_vector: Option<&mut Matrix<f64, Const<3>, Const<3>, ArrayStorage<f64, 3, 3>>>, ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Source§fn jacobian_identity() -> <SE3 as LieGroup>::JacobianMatrix
fn jacobian_identity() -> <SE3 as LieGroup>::JacobianMatrix
Source§fn zero_jacobian() -> <SE3 as LieGroup>::JacobianMatrix
fn zero_jacobian() -> <SE3 as LieGroup>::JacobianMatrix
Source§fn is_valid(&self, tolerance: f64) -> bool
fn is_valid(&self, tolerance: f64) -> bool
Source§fn as_param_slice(&self) -> &[f64]
fn as_param_slice(&self) -> &[f64]
Source§fn as_param_slice_mut(&mut self) -> &mut [f64]
fn as_param_slice_mut(&mut self) -> &mut [f64]
Source§fn from_param_slice(s: &[f64]) -> SE3
fn from_param_slice(s: &[f64]) -> SE3
as_param_slice).Source§fn right_plus(
&self,
tangent: &Self::TangentVector,
jacobian_self: Option<&mut Self::JacobianMatrix>,
jacobian_tangent: Option<&mut Self::JacobianMatrix>,
) -> Self
fn right_plus( &self, tangent: &Self::TangentVector, jacobian_self: Option<&mut Self::JacobianMatrix>, jacobian_tangent: Option<&mut Self::JacobianMatrix>, ) -> Self
Source§fn right_minus(
&self,
other: &Self,
jacobian_self: Option<&mut Self::JacobianMatrix>,
jacobian_other: Option<&mut Self::JacobianMatrix>,
) -> Self::TangentVector
fn right_minus( &self, other: &Self, jacobian_self: Option<&mut Self::JacobianMatrix>, jacobian_other: Option<&mut Self::JacobianMatrix>, ) -> Self::TangentVector
Source§fn left_plus(
&self,
tangent: &Self::TangentVector,
jacobian_tangent: Option<&mut Self::JacobianMatrix>,
jacobian_self: Option<&mut Self::JacobianMatrix>,
) -> Self
fn left_plus( &self, tangent: &Self::TangentVector, jacobian_tangent: Option<&mut Self::JacobianMatrix>, jacobian_self: Option<&mut Self::JacobianMatrix>, ) -> Self
Source§fn left_minus(
&self,
other: &Self,
jacobian_self: Option<&mut Self::JacobianMatrix>,
jacobian_other: Option<&mut Self::JacobianMatrix>,
) -> Self::TangentVector
fn left_minus( &self, other: &Self, jacobian_self: Option<&mut Self::JacobianMatrix>, jacobian_other: Option<&mut Self::JacobianMatrix>, ) -> Self::TangentVector
Source§fn plus(
&self,
tangent: &Self::TangentVector,
jacobian_self: Option<&mut Self::JacobianMatrix>,
jacobian_tangent: Option<&mut Self::JacobianMatrix>,
) -> Self
fn plus( &self, tangent: &Self::TangentVector, jacobian_self: Option<&mut Self::JacobianMatrix>, jacobian_tangent: Option<&mut Self::JacobianMatrix>, ) -> Self
Source§fn minus(
&self,
other: &Self,
jacobian_self: Option<&mut Self::JacobianMatrix>,
jacobian_other: Option<&mut Self::JacobianMatrix>,
) -> Self::TangentVector
fn minus( &self, other: &Self, jacobian_self: Option<&mut Self::JacobianMatrix>, jacobian_other: Option<&mut Self::JacobianMatrix>, ) -> Self::TangentVector
Source§fn between(
&self,
other: &Self,
jacobian_self: Option<&mut Self::JacobianMatrix>,
jacobian_other: Option<&mut Self::JacobianMatrix>,
) -> Self
fn between( &self, other: &Self, jacobian_self: Option<&mut Self::JacobianMatrix>, jacobian_other: Option<&mut Self::JacobianMatrix>, ) -> Self
Source§fn tangent_dim(&self) -> usize
fn tangent_dim(&self) -> usize
Source§impl RerunConvert3D for SE3
Available on crate feature visualization only.
impl RerunConvert3D for SE3
visualization only.Source§fn to_rerun_transform(&self) -> Transform3D
fn to_rerun_transform(&self) -> Transform3D
Source§fn to_rerun_vec3d(&self) -> Vec3D
fn to_rerun_vec3d(&self) -> Vec3D
Source§fn to_rerun_points3d(&self) -> Points3D
fn to_rerun_points3d(&self) -> Points3D
Source§fn to_rerun_arrows3d(&self) -> Arrows3D
fn to_rerun_arrows3d(&self) -> Arrows3D
impl StructuralPartialEq for SE3
Source§impl Tangent<SE3> for SE3Tangent
impl Tangent<SE3> for SE3Tangent
Source§fn right_jacobian(&self) -> <SE3 as LieGroup>::JacobianMatrix
fn right_jacobian(&self) -> <SE3 as LieGroup>::JacobianMatrix
Right Jacobian Jr.
Computes the right Jacobian matrix such that for small δφ: exp((φ + δφ)^∧) ≈ exp(φ^∧) ∘ exp((Jr δφ)^∧)
For SE(3), this involves computing Jacobians for both translation and rotation parts.
§Returns
The right Jacobian matrix (6x6)
Source§fn left_jacobian(&self) -> <SE3 as LieGroup>::JacobianMatrix
fn left_jacobian(&self) -> <SE3 as LieGroup>::JacobianMatrix
Left Jacobian Jl.
Computes the left Jacobian matrix such that for small δφ: exp((φ + δφ)^∧) ≈ exp((Jl δφ)^∧) ∘ exp(φ^∧)
Following manif conventions for SE(3) left Jacobian computation.
§Returns
The left Jacobian matrix (6x6)
Source§fn right_jacobian_inv(&self) -> <SE3 as LieGroup>::JacobianMatrix
fn right_jacobian_inv(&self) -> <SE3 as LieGroup>::JacobianMatrix
Inverse of right Jacobian Jr⁻¹.
Computes the inverse of the right Jacobian. This is used for computing perturbations and derivatives.
§Numerical Conditioning Warning
This 6×6 Jacobian inverse inherits SO(3) conditioning issues plus scale effects.
Sources of numerical error:
- Embedded SO(3) rotation: (1 + cos θ) / (2θ sin θ) singularity
- Q-block coupling: rotation errors propagate to translation
- Scale amplification: large translations increase absolute error
Expected Precision:
- Small rotations (θ < 0.01): Jr * Jr⁻¹ ≈ I within ~1e-6
- Moderate rotations (θ < 0.1): Jr * Jr⁻¹ ≈ I within ~1e-4
- Larger rotations: Jr * Jr⁻¹ ≈ I within ~0.01
This is a fundamental mathematical limitation consistent with production SLAM libraries. See module documentation for references.
§Returns
The inverse right Jacobian matrix (6x6)
Source§fn left_jacobian_inv(&self) -> <SE3 as LieGroup>::JacobianMatrix
fn left_jacobian_inv(&self) -> <SE3 as LieGroup>::JacobianMatrix
Inverse of left Jacobian Jl⁻¹.
Computes the inverse of the left Jacobian following manif conventions.
§Numerical Conditioning Warning
This 6×6 Jacobian inverse has the same conditioning issues as the right Jacobian inverse.
Sources of numerical error:
- Embedded SO(3) rotation: (1 + cos θ) / (2θ sin θ) singularity
- Q-block coupling: rotation errors propagate to translation
- Scale amplification: large translations increase absolute error
Expected Precision: Same as right Jacobian inverse (see above).
This is a fundamental mathematical limitation consistent with production SLAM libraries. See module documentation for references.
§Returns
The inverse left Jacobian matrix (6x6)
Source§fn hat(&self) -> <SE3 as LieGroup>::LieAlgebra
fn hat(&self) -> <SE3 as LieGroup>::LieAlgebra
Hat operator: φ^∧ (vector to matrix).
Converts the SE(3) tangent vector to its 4x4 matrix representation in the Lie algebra. Following manif conventions, the structure is: [ theta_× rho ] [ 0 0 ] where theta_× is the skew-symmetric matrix of the rotational part.
§Returns
The 4x4 matrix representation in the SE(3) Lie algebra
Source§fn zero() -> <SE3 as LieGroup>::TangentVector
fn zero() -> <SE3 as LieGroup>::TangentVector
Zero tangent vector.
Returns the zero element of the SE(3) tangent space.
§Returns
A 6-dimensional zero vector
Source§fn random() -> <SE3 as LieGroup>::TangentVector
fn random() -> <SE3 as LieGroup>::TangentVector
Random tangent vector (useful for testing).
Generates a random tangent vector with reasonable bounds. Translation components are in [-1, 1] and rotation components in [-0.1, 0.1].
§Returns
A random 6-dimensional tangent vector
Source§fn normalize(&mut self)
fn normalize(&mut self)
Normalize the tangent vector to unit norm.
Modifies this tangent vector to have unit norm. If the vector is near zero, it remains unchanged.
Source§fn normalized(&self) -> <SE3 as LieGroup>::TangentVector
fn normalized(&self) -> <SE3 as LieGroup>::TangentVector
Return a unit tangent vector in the same direction.
Returns a new tangent vector with unit norm in the same direction. If the original vector is near zero, returns zero.
§Returns
A normalized copy of the tangent vector
Source§fn small_adj(&self) -> <SE3 as LieGroup>::JacobianMatrix
fn small_adj(&self) -> <SE3 as LieGroup>::JacobianMatrix
Small adjoint matrix for SE(3).
For SE(3), the small adjoint matrix has the structure: [ Omega V ] [ 0 Omega ] where Omega is the skew-symmetric matrix of the angular part and V is the skew-symmetric matrix of the linear part.
Source§fn lie_bracket(&self, other: &SE3Tangent) -> <SE3 as LieGroup>::TangentVector
fn lie_bracket(&self, other: &SE3Tangent) -> <SE3 as LieGroup>::TangentVector
Lie bracket for SE(3).
Computes the Lie bracket [this, other] = this.small_adj() * other.
Source§fn is_approx(&self, other: &SE3Tangent, tolerance: f64) -> bool
fn is_approx(&self, other: &SE3Tangent, tolerance: f64) -> bool
Check if this tangent vector is approximately equal to another.
§Arguments
other- The other tangent vector to compare withtolerance- The tolerance for the comparison
Source§fn from_slice(s: &[f64]) -> SE3Tangent
fn from_slice(s: &[f64]) -> SE3Tangent
as_slice).Source§fn is_dynamic() -> bool
fn is_dynamic() -> bool
Auto Trait Implementations§
impl Freeze for SE3
impl RefUnwindSafe for SE3
impl Send for SE3
impl Sync for SE3
impl Unpin for SE3
impl UnsafeUnpin for SE3
impl UnwindSafe for SE3
Blanket Implementations§
impl<T> Allocation for T
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> 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>,
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>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
Source§impl<T> ErrorLogging for Twhere
T: Display,
impl<T> ErrorLogging for Twhere
T: Display,
impl<T, U> Imply<T> for U
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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::RequestSource§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
Source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
Source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Source§impl<T> StrictAs for T
impl<T> StrictAs for T
Source§fn strict_as<Dst>(self) -> Dstwhere
T: StrictCast<Dst>,
fn strict_as<Dst>(self) -> Dstwhere
T: StrictCast<Dst>,
Source§impl<Src, Dst> StrictCastFrom<Src> for Dstwhere
Src: StrictCast<Dst>,
impl<Src, Dst> StrictCastFrom<Src> for Dstwhere
Src: StrictCast<Dst>,
Source§fn strict_cast_from(src: Src) -> Dst
fn strict_cast_from(src: Src) -> Dst
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.