Struct qsym2::symmetry::symmetry_element::SymmetryElement

source ·
pub struct SymmetryElement { /* private fields */ }
Expand description

Structure for storing and managing symmetry elements.

Each symmetry element is a geometrical object in $\mathbb{R}^3$ that encodes the following pieces of information:

  • the axis of rotation $\hat{\mathbf{n}}$,
  • the angle of rotation $\phi$,
  • the associated improper operation, if any, and
  • the associated antiunitary operation, if any.

These pieces of information can be stored in the following representation of a symmetry element $\hat{g}$:

\hat{g} = \hat{\alpha} \hat{\gamma} \hat{C}_n^k,

where

  • $n \in \mathbb{N}_{+}$, $k \in \mathbb{Z}/n\mathbb{Z}$ such that $\lfloor -n/2 \rfloor < k \le \lfloor n/2 \rfloor$,
  • $\hat{\gamma}$ is either the identity $\hat{e}$, the inversion operation $\hat{i}$, or a reflection operation $\hat{\sigma}$ perpendicular to the axis of rotation,
  • $\hat{\alpha}$ is either the identity $\hat{e}$, the complex conjugation $\hat{K}$, or the time reversal $\hat{\theta}$.

With this definition, the above pieces of information required to specify a geometrical symmetry element are given as follows:

  • the axis of rotation $\hat{\mathbf{n}}$ is given by the axis of $\hat{C}_n^k$,
  • the angle of rotation $\phi = 2\pi k/n \in (-\pi, \pi]$,
  • the improper contribution $\hat{\gamma}$,
  • the antiunitary contribution $\hat{\alpha}$.

This definition also allows the unitary part of $\hat{g}$ to be interpreted as an element of either $\mathsf{O}(3)$ or $\mathsf{SU}'(2)$, which means that the unitary part of $\hat{g}$ is also a symmetry operation in the corresponding group, and a rather special one that can be used to generate other symmetry operations of the group. $\hat{g}$ thus serves as a bridge between molecular symmetry and abstract group theory.

There is one small caveat: for infinite-order elements, $n$ and $k$ can no longer be used to give the angle of rotation. There must thus be a mechanism to allow for infinite-order elements to be interpreted as an arbitrary finite-order one. An explicit specification of the angle of rotation $\phi$ seems to be the best way to do this. In other words, the angle of rotation of each element is specified by either a tuple of integers $(k, n)$ or a floating-point number $\phi$.

Implementations§

source§

impl SymmetryElement

source

pub fn builder() -> SymmetryElementBuilder

Returns a builder to construct a new symmetry element.

§Returns

A builder to construct a new symmetry element.

source

pub fn raw_proper_order(&self) -> &ElementOrder

Returns the raw order of the proper rotation. This might not be equal to the value of $n$ if the fraction $k/n$ has been reduced.

source

pub fn raw_proper_power(&self) -> Option<&i32>

Returns the raw power of the proper rotation. This might not be equal to the value of $k$ if the fraction $k/n$ has been reduced.

source

pub fn raw_axis(&self) -> &Vector3<f64>

Returns the raw axis of the proper rotation.

source

pub fn standard_positive_axis(&self) -> Vector3<f64>

Returns the axis of the proper rotation in the standard positive hemisphere.

source

pub fn signed_axis(&self) -> Vector3<f64>

Returns the axis of the proper rotation multiplied by the sign of the rotation angle. If the proper rotation is a binary rotation, then the positive axis is always returned.

source

pub fn proper_rotation_pole(&self) -> Vector3<f64>

Returns the pole of the proper rotation part of the element while leaving any improper and antiunitary contributions intact.

If the proper rotation part if a binary rotation, the pole is always in the standard positive hemisphere.

§Returns

The position vector of the proper rotation pole.

source

pub fn proper_fraction(&self) -> Option<&GenericFraction<u32>>

Returns the proper fraction for this element, if any.

The element lacks a proper fraction if it is infinite-order.

source

pub fn proper_angle(&self) -> Option<f64>

Returns the proper angle for this element, if any.

The element lacks a proper angle if it is infinite-order and the rotation angle has not been set.

source

pub fn kind(&self) -> &SymmetryElementKind

Returns the spatial and antiunitary kind of this element.

source

pub fn rotation_group(&self) -> &RotationGroup

Returns the rotation group and possibly the identity-connected homotopy class in which the proper rotation part of this element is to be interpreted.

source

pub fn is_generator(&self) -> bool

Returns a boolean indicating if the element is a generator of a group.

source

pub fn threshold(&self) -> f64

Returns the threshold for approximate comparisons.

source

pub fn contains_time_reversal(&self) -> bool

Checks if the symmetry element contains a time-reversal operator as the antiunitary part.

§Returns

A boolean indicating if the symmetry element contains a time-reversal operator as the antiunitary part.

source

pub fn contains_antiunitary(&self) -> Option<AntiunitaryKind>

Checks if the symmetry element contains an antiunitary part.

§Returns

Returns None if the symmetry element has no antiunitary parts, or Some wrapping around the antiunitary kind if the symmetry element contains an antiunitary part.

source

pub fn is_su2(&self) -> bool

Checks if the proper rotation part of the element is in $\mathsf{SU}(2)$.

source

pub fn is_su2_class_1(&self) -> bool

Checks if the proper rotation part of the element is in $\mathsf{SU}(2)$ and connected to the identity via a homotopy path of class 1.

See S.L. Altmann, Rotations, Quaternions, and Double Groups (Dover Publications, Inc., New York, 2005) for further information.

source

pub fn is_o3_proper(&self, au: Option<AntiunitaryKind>) -> bool

Checks if the spatial part of the symmetry element is proper and has the specified antiunitary attribute.

§Arguments
  • au - An Option for the desired antiunitary kind.
§Returns

A boolean indicating if the symmetry element is proper and has the specified antiunitary attribute.

source

pub fn is_o3_identity(&self, au: Option<AntiunitaryKind>) -> bool

Checks if the symmetry element is spatially an identity element and has the specified antiunitary attribute.

§Arguments
  • au - An Option for the desired antiunitary kind.
§Returns

A boolean indicating if this symmetry element is spatially an identity element and has the specified antiunitary attribute.

source

pub fn is_o3_inversion_centre(&self, au: Option<AntiunitaryKind>) -> bool

Checks if the symmetry element is spatially an inversion centre and has the specified antiunitary attribute.

§Arguments
  • au - An Option for the desired antiunitary kind.
§Returns

A boolean indicating if this symmetry element is an inversion centre and has the specified antiunitary attribute.

source

pub fn is_o3_binary_rotation_axis(&self, au: Option<AntiunitaryKind>) -> bool

Checks if the symmetry element is spatially a binary rotation axis and has the specified antiunitary attribute.

§Arguments
  • au - An Option for the desired antiunitary kind.
§Returns

A boolean indicating if this symmetry element is spatially a binary rotation axis and has the specified antiunitary attribute.

source

pub fn is_o3_mirror_plane(&self, au: Option<AntiunitaryKind>) -> bool

Checks if the symmetry element is spatially a mirror plane and has the specified antiunitary attribute.

§Arguments
  • au - An Option for the desired antiunitary kind.
§Returns

A boolean indicating if this symmetry element is spatially a mirror plane and has the specified antiunitary attribute.

source

pub fn get_full_symbol(&self) -> String

Returns the full symbol for this symmetry element, which does not classify certain improper rotation axes into inversion centres or mirror planes, but which does simplify the power/order ratio, and which displays only the absolute value of the power since symmetry elements do not distinguish senses of rotations since rotations of oposite directions are inverses of each other, both of which must exist in the group.

Some additional symbols that can be unconventional include:

  • θ: time reversal,
  • (Σ): the spatial part is in homotopy class 0 of $\mathsf{SU}'(2)$,
  • (QΣ): the spatial part is in homotopy class 1 of $\mathsf{SU}'(2)$.

See RotationGroup for further information.

§Returns

The full symbol for this symmetry element.

source

pub fn get_simplified_symbol(&self) -> String

Returns the simplified symbol for this symmetry element, which classifies special symmetry elements (identity, inversion centre, time reversal, mirror planes), and which simplifies the power/order ratio and displays only the absolute value of the power since symmetry elements do not distinguish senses of rotations, as rotations of oposite directions are inverses of each other, both of which must exist in the group.

§Returns

The simplified symbol for this symmetry element.

source

pub fn get_simplified_symbol_signed_power(&self) -> String

Returns the simplified symbol for this symmetry element, which classifies special symmetry elements (identity, inversion centre, mirror planes), and which simplifies the power/order ratio and displays only the absolute value of the power since symmetry elements do not distinguish senses of rotations. Rotations of oposite directions are inverses of each other, both of which must exist in the group.

§Returns

The simplified symbol for this symmetry element.

source

pub fn convert_to_improper_kind( &self, improper_kind: &SymmetryElementKind, preserves_power: bool, ) -> Self

Returns a copy of the current improper symmetry element that has been converted to the required improper kind. For $\mathsf{SU}'(2)$ elements, the conversion will be carried out in the same homotopy class.

To convert between the two improper kinds, we essentially seek integers $n, n' \in \mathbb{N}_{+}$ and $k \in \mathbb{Z}/n\mathbb{Z}$, $k' \in \mathbb{Z}/n'\mathbb{Z}$, such that

\sigma C_n^k = i C_{n'}^{k'},

where the axes of all involved elements are parallel. By noting that $\sigma = i C_2$ and that $k$ and $k'$ must have opposite signs, we can easily show that, for $k \ge 0, k' < 0$,

\begin{aligned}
    n' &= \frac{2n}{\operatorname{gcd}(2n, n - 2k)},\\
    k' &= -\frac{n - 2k}{\operatorname{gcd}(2n, n - 2k)},
\end{aligned}

whereas for $k < 0, k' \ge 0$,

\begin{aligned}
    n' &= \frac{2n}{\operatorname{gcd}(2n, n + 2k)},\\
    k' &= \frac{n + 2k}{\operatorname{gcd}(2n, n + 2k)}.
\end{aligned}

The above relations are self-inverse. It can be further shown that $\operatorname{gcd}(n', k') = 1$. Hence, for symmetry element conversions, we can simply take $k' = 1$. This is because a symmetry element plays the role of a generator, and the coprimality of $n'$ and $k'$ means that $i C_{n'}^{1}$ is as valid a generator as $i C_{n'}^{k'}$.

§Arguments
  • improper_kind - The improper kind to which self is to be converted. There is no need to make sure the time reversal specification in improper_kind matches that of self as the conversion will take care of this.
  • preserves_power - Boolean indicating if the proper rotation power $k'$ should be preserved or should be set to $1$.
§Returns

A copy of the current improper symmetry element that has been converted.

§Panics

Panics when self is not an improper element, or when improper_kind is not one of the improper variants.

source

pub fn to_tr(&self, tr: bool) -> Self

Converts the symmetry element to one with the desired time-reversal property.

§Arguments
  • tr - A boolean indicating if time reversal is to be included.
§Returns

A new symmetry element with or without time reversal as indicated by tr.

source

pub fn to_su2(&self, normal: bool) -> Option<Self>

Convert the proper rotation of the current element to one in $\mathsf{SU}(2)$.

§Arguments
  • normal - A boolean indicating whether the resultant $\mathsf{SU}(2)$ proper rotation is of homotopy class 0 (true) or 1 (false) when connected to the identity.
§Returns

A symmetry element in $\mathsf{SU}(2)$, or None if the current symmetry element is already in $\mathsf{SU}(2)$.

source

pub fn closeness_to_cartesian_axes(&self) -> (f64, usize)

The closeness of the symmetry element’s axis to one of the three space-fixed Cartesian axes.

§Returns

A tuple of two values:

  • A value $\gamma \in [0, 1-1/\sqrt{3}]$ indicating how close the axis is to one of the three Cartesian axes. The closer $\gamma$ is to $0$, the closer the alignment.
  • An index for the closest axis: 0 for $z$, 1 for $y$, 2 for $x$.
§Panics

Panics when $\gamma$ is outside the required closed interval $[0, 1-1/\sqrt{3}]$ by more than the threshold value in self.

Trait Implementations§

source§

impl Clone for SymmetryElement

source§

fn clone(&self) -> SymmetryElement

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

impl Debug for SymmetryElement

source§

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

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

impl<'de> Deserialize<'de> for SymmetryElement

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for SymmetryElement

source§

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

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

impl Hash for SymmetryElement

source§

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

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

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

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

impl PartialEq for SymmetryElement

source§

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

Two symmetry elements are equal if and only if the following conditions are all satisfied:

  • they are both in the same rotation group and belong to the same homotopy class;
  • they are both proper or improper;
  • they both have the same antiunitary properties;
  • their axes are either parallel or anti-parallel;
  • their proper rotation angles have equal absolute values.

For improper elements, proper rotation angles are taken in the inversion centre convention.

Thus, symmetry element equality is less strict than symmetry operation equality. This is so that parallel or anti-parallel symmetry elements with the same spatial and time-reversal parities and angle of rotation are deemed identical, thus facilitating symmetry detection where one does not yet care much about directions of rotations.

1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for SymmetryElement

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for SymmetryElement

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

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

source§

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

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

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

impl<T> Same for T

§

type Output = T

Should always be Self
§

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

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
§

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

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,

§

impl<T> Ungil for T
where T: Send,