Struct ModuleString

Source
pub struct ModuleString<R, T: Hash + Eq, A: ?Sized> { /* private fields */ }
Expand description

Creates free-arithmetic constructions based upon order-invariant addition of terms of type C with multiplication with scalar coefficients of type R

§Basic Construction

Given type parameters R, T, and A, the construction goes as follows:

  • Internally, each instance contains a map from instances of T to coefficients from R
  • Addition is then implemented by merging the arguments’ HashMaps where repeated terms have their coefficients added together
  • Multiplication with R values is applied by each term’s coefficient with the given scalar
  • Multiplication between terms is performed by multiplying the coefficients and apply the rule defined by type A
  • Then, full multiplication is defined by distributing over each pair of terms and summing

With this system, using different A rules and T/R types, a number of variants can be defined:

  • FreeModule<R,T> defines a vector-space over R using the default addition and R-multiplication without having a multiplication rule
  • FreeAlgebra<R,T> is a FreeModule<R,T> but where the multiplication rule between terms is built as with a FreeMonoid<T>
  • MonoidRing<R,T> is a FreeModule<R,T> but where the multiplication rule for terms simply uses the intrinsic multiplication of T

§Other impls

In addition to the basic arithmetic operations, ModuleString implements a number of other notable traits depending on the type arguments:

§A note on IterMut

The method [ModuleString.iter_mut()] will give an valid iterator over mutable references to each element of the object, but it is of note that because of the nature of some of the AlgebraRule’s, the method will reallocate internal storage and iterate through every element, even if dropped.

The reason for this is that if it did not, it would be possible to modify a ModuleString into an invalid state. Hence, to mitigate this, the iterator must remultiply every element again as it iterates over the references.

Implementations§

Source§

impl<T: Hash + Eq, R, A: ?Sized> ModuleString<R, T, A>

Source

pub fn len(&self) -> usize

Returns the number of terms in this module element

§Examples
use maths_traits::algebra::Zero;
use free_algebra::FreeModule;

let p = FreeModule::zero();
let q = &p + (3.5, 'x');
let r = &q + (2.0, 'y');
let s = &r + (2.0, 'x'); //adds to first term without increasing length

assert_eq!(p.len(), 0);
assert_eq!(q.len(), 1);
assert_eq!(r.len(), 2);
assert_eq!(s.len(), 2);
Source

pub fn get_ref<Q: Hash + Eq>(&self, t: &Q) -> Option<&R>
where T: Borrow<Q>,

Retrieves a reference to the coefficient of a term, if it is non-zero

§Examples
use maths_traits::algebra::Zero;
use free_algebra::FreeModule;

let p = FreeModule::zero() + (3.5, 'x') + (2.0, 'y') + (1.0, 'z');

assert_eq!(p.get_ref(&'x'), Some(&3.5));
assert_eq!(p.get_ref(&'y'), Some(&2.0));
assert_eq!(p.get_ref(&'z'), Some(&1.0));
assert_eq!(p.get_ref(&'w'), None);
Source

pub fn get<Q: Hash + Eq>(&self, t: &Q) -> R
where T: Borrow<Q>, R: Zero + Clone,

Clones a the coefficient of a term or returns zero if it doesn’t exist

§Examples
use maths_traits::algebra::Zero;
use free_algebra::FreeModule;

let p = FreeModule::zero() + (3.5, 'x') + (2.0, 'y') + (1.0, 'z');

assert_eq!(p.get(&'x'), 3.5);
assert_eq!(p.get(&'y'), 2.0);
assert_eq!(p.get(&'z'), 1.0);
assert_eq!(p.get(&'w'), 0.0);
Source

pub fn iter<'a>(&'a self) -> Iter<'a, R, T>

Produces an iterator over references to the terms and references in this element

Source

pub fn iter_mut<'a>(&'a mut self) -> IterMut<'a, R, T, A>
where R: AddAssign,

Produces an iterator over mutable references to the terms and references in this element

§Examples
use maths_traits::algebra::Zero;
use free_algebra::FreeModule;

let mut p = FreeModule::zero() + (3.5, 'x') + (2.0, 'y') + (1.0, 'z');
for (_, t) in p.iter_mut() {
    *t = 'a';
}

assert_eq!(p.get(&'x'), 0.0);
assert_eq!(p.get(&'y'), 0.0);
assert_eq!(p.get(&'z'), 0.0);
assert_eq!(p.get(&'a'), 6.5);
Source

pub fn commutator(self, rhs: Self) -> Self
where Self: MulMagma + Sub<Output = Self>,

Computes the algebraic commutator [a,b] = a*b - b*a

§Examples
use maths_traits::algebra::One;
use free_algebra::{FreeAlgebra, FreeMonoid};

let one = FreeMonoid::<char>::one();
let x:FreeMonoid<_> = 'x'.into();
let y:FreeMonoid<_> = 'y'.into();

let p:FreeAlgebra<f32,_> = FreeAlgebra::one() + &x;
let q:FreeAlgebra<f32,_> = FreeAlgebra::one() + &y;

let commutator = p.commutator(q);

assert_eq!(commutator.get(&one), 0.0);
assert_eq!(commutator.get(&x), 0.0);
assert_eq!(commutator.get(&y), 0.0);
assert_eq!(commutator.get(&(&x*&y)), 1.0);
assert_eq!(commutator.get(&(&y*&x)), -1.0);

A property of significance for this product is that when the arguments commute, the output is always 0.

use maths_traits::algebra::{One, Zero};
use free_algebra::{FreeAlgebra, FreeMonoid};

let p = FreeAlgebra::<f32,_>::one() + FreeMonoid::from('x');

let commutator = p.clone().commutator(p);
assert!(commutator.is_zero());

Trait Implementations§

Source§

impl<'a, RHS, T, R, A> Add<RHS> for &'a ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, ModuleString<R, T, A>: Clone + Add<RHS>,

Source§

type Output = <ModuleString<R, T, A> as Add<RHS>>::Output

The resulting type after applying the + operator.
Source§

fn add(self, rhs: RHS) -> Self::Output

Performs the + operation. Read more
Source§

impl<RHS, T, R, A> Add<RHS> for ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, Self: AddAssign<RHS>,

Source§

type Output = ModuleString<R, T, A>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: RHS) -> Self

Performs the + operation. Read more
Source§

impl<'a, T, R, A> AddAssign<&'a ModuleString<R, T, A>> for ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, Self: AddAssign<Self> + Clone,

Source§

fn add_assign(&mut self, rhs: &'a Self)

Performs the += operation. Read more
Source§

impl<'a, T, R, A> AddAssign<&'a T> for ModuleString<R, T, A>
where T: Hash + Eq + Clone, A: ?Sized, Self: AddAssign<T>,

Source§

fn add_assign(&mut self, rhs: &'a T)

Performs the += operation. Read more
Source§

impl<T: Hash + Eq, R: AddAssign, A: ?Sized> AddAssign<(R, T)> for ModuleString<R, T, A>

Source§

fn add_assign(&mut self, rhs: (R, T))

Performs the += operation. Read more
Source§

impl<T: Hash + Eq, R: AddAssign + One, A: ?Sized> AddAssign<T> for ModuleString<R, T, A>

Source§

fn add_assign(&mut self, rhs: T)

Performs the += operation. Read more
Source§

impl<T: Hash + Eq, R: AddAssign, A: ?Sized> AddAssign for ModuleString<R, T, A>

Source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
Source§

impl<R, T, A: ?Sized> Clone for ModuleString<R, T, A>
where R: Clone, T: Clone + Hash + Eq,

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
Source§

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

Performs copy-assignment from source. Read more
Source§

impl<R, T, A: ?Sized> Debug for ModuleString<R, T, A>
where R: Debug, T: Debug + Hash + Eq,

Source§

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

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

impl<R, T: Hash + Eq, A: ?Sized> Default for ModuleString<R, T, A>

Source§

fn default() -> Self

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

impl<R: Display, T: Hash + Eq + Display, A: ?Sized> Display for ModuleString<R, T, A>

Formats the ModuleString as a sequence of factors separated by +’s

§Examples

use maths_traits::algebra::{One, Zero};
use free_algebra::{FreeAlgebra, FreeMonoid};

let one = FreeMonoid::one();
let x:FreeMonoid<_> = 'x'.into();
let y:FreeMonoid<_> = 'y'.into();

let mut p = FreeAlgebra::zero();
assert_eq!(format!("{}", p), "0");

p += (1.0, one.clone());
assert_eq!(format!("{}", p), "1");

p += (2.5, one);
assert_eq!(format!("{}", p), "3.5");

p += x;
assert!(format!("{}", p) == "(3.5 + x)" || format!("{}", p) == "(x + 3.5)");

p *= (1.0, y);
assert!(format!("{}", p) == "(3.5*y + x*y)" || format!("{}", p) == "(x*y + 3.5*y)");
assert!(format!("{:#}", p) == "(3.5y + xy)" || format!("{:#}", p) == "(xy + 3.5y)");
Source§

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

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

impl<'a, RHS, T, R, A> Div<RHS> for &'a ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, ModuleString<R, T, A>: Clone + Div<RHS>,

Source§

type Output = <ModuleString<R, T, A> as Div<RHS>>::Output

The resulting type after applying the / operator.
Source§

fn div(self, rhs: RHS) -> Self::Output

Performs the / operation. Read more
Source§

impl<RHS, T, R, A> Div<RHS> for ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, Self: DivAssign<RHS>,

Source§

type Output = ModuleString<R, T, A>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: RHS) -> Self

Performs the / operation. Read more
Source§

impl<'a, T, R, A> DivAssign<&'a R> for ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, Self: DivAssign<R>, R: Clone,

Source§

fn div_assign(&mut self, rhs: &'a R)

Performs the /= operation. Read more
Source§

impl<T: Hash + Eq, R: DivAssign + Clone, A: ?Sized> DivAssign<R> for ModuleString<R, T, A>

Source§

fn div_assign(&mut self, rhs: R)

Performs the /= operation. Read more
Source§

impl<T: Hash + Eq, R: AddAssign, A: ?Sized> Extend<(R, T)> for ModuleString<R, T, A>

Source§

fn extend<I: IntoIterator<Item = (R, T)>>(&mut self, iter: I)

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<T: Hash + Eq, R: One, A: ?Sized> From<(R, T)> for ModuleString<R, T, A>

Source§

fn from((r, t): (R, T)) -> Self

Converts to this type from the input type.
Source§

impl<T: Hash + Eq, R: One, A: ?Sized> From<T> for ModuleString<R, T, A>

Source§

fn from(t: T) -> Self

Converts to this type from the input type.
Source§

impl<T: Hash + Eq, R: AddAssign, A: ?Sized> FromIterator<(R, T)> for ModuleString<R, T, A>

Source§

fn from_iter<I: IntoIterator<Item = (R, T)>>(iter: I) -> Self

Creates a value from an iterator. Read more
Source§

impl<T: Hash + Eq, R: AddAssign, A: ?Sized> FromIterator<ModuleString<R, T, A>> for ModuleString<R, T, A>

Source§

fn from_iter<I: IntoIterator<Item = Self>>(iter: I) -> Self

Creates a value from an iterator. Read more
Source§

impl<T: Hash + Eq, R: AddAssign + One, A: ?Sized> FromIterator<T> for ModuleString<R, T, A>

Source§

fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self

Creates a value from an iterator. Read more
Source§

impl<R, T: Hash + Eq, A: ?Sized> Hash for ModuleString<R, T, A>
where HashMap<T, R>: Hash,

Source§

fn hash<__HRTA>(&self, __state: &mut __HRTA)
where __HRTA: Hasher,

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<T: Hash + Eq, R, A: ?Sized, I> Index<I> for ModuleString<R, T, A>
where HashMap<T, R>: Index<I>,

Source§

type Output = <HashMap<T, R> as Index<I>>::Output

The returned type after indexing.
Source§

fn index(&self, i: I) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl<T: Hash + Eq, R, A: ?Sized> IntoIterator for ModuleString<R, T, A>

Source§

type Item = (R, T)

The type of the elements being iterated over.
Source§

type IntoIter = Map<IntoIter<T, R>, fn((T, R)) -> (R, T)>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> IntoIter<R, T>

Creates an iterator from a value. Read more
Source§

impl<'a, RHS, T, R, A> Mul<RHS> for &'a ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, ModuleString<R, T, A>: Clone + Mul<RHS>,

Source§

type Output = <ModuleString<R, T, A> as Mul<RHS>>::Output

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: RHS) -> Self::Output

Performs the * operation. Read more
Source§

impl<RHS, T, R, A> Mul<RHS> for ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, Self: MulAssign<RHS>,

Source§

type Output = ModuleString<R, T, A>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: RHS) -> Self

Performs the * operation. Read more
Source§

impl<'a, T, R, A> MulAssign<&'a R> for ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, Self: MulAssign<R>, R: Clone,

Source§

fn mul_assign(&mut self, rhs: &'a R)

Performs the *= operation. Read more
Source§

impl<T: Hash + Eq + Clone, R: MulMagma + AddMagma, A: ?Sized + AlgebraRule<R, T>> MulAssign<(R, T)> for ModuleString<R, T, A>

Source§

fn mul_assign(&mut self, (r1, t1): (R, T))

Performs the *= operation. Read more
Source§

impl<T: Hash + Eq, R: MulAssign + Clone, A: ?Sized> MulAssign<R> for ModuleString<R, T, A>

Source§

fn mul_assign(&mut self, rhs: R)

Performs the *= operation. Read more
Source§

impl<T: Hash + Eq + Clone, R: Semiring, A: ?Sized + AlgebraRule<R, T>> MulAssign for ModuleString<R, T, A>

Source§

fn mul_assign(&mut self, rhs: Self)

Performs the *= operation. Read more
Source§

impl<'a, T: Hash + Eq, R: Neg, A: ?Sized> Neg for &'a ModuleString<R, T, A>
where ModuleString<R, T, A>: Clone,

Source§

type Output = ModuleString<<R as Neg>::Output, T, A>

The resulting type after applying the - operator.
Source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
Source§

impl<T: Hash + Eq, R: Neg, A: ?Sized> Neg for ModuleString<R, T, A>

Source§

type Output = ModuleString<<R as Neg>::Output, T, A>

The resulting type after applying the - operator.
Source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
Source§

impl<T: Clone + Hash + Eq, R: PartialEq + UnitalSemiring, A: UnitalAlgebraRule<R, T> + ?Sized> One for ModuleString<R, T, A>

Source§

fn one() -> Self

Returns the multiplicative identity element of Self, 1. Read more
Source§

fn is_one(&self) -> bool

Returns true if self is equal to the multiplicative identity. Read more
Source§

fn set_one(&mut self)

Sets self to the multiplicative identity element of Self, 1.
Source§

impl<R, T, A: ?Sized> PartialEq for ModuleString<R, T, A>
where R: PartialEq, T: PartialEq + Hash + Eq,

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<Z, R, T, A> Pow<Z> for ModuleString<R, T, A>

Source§

type Output = ModuleString<R, T, A>

The result after applying the operator.
Source§

fn pow(self, p: Z) -> Self

Returns self to the power rhs. Read more
Source§

impl<T: Hash + Eq, R, A: ?Sized, K> Product<K> for ModuleString<R, T, A>
where Self: Mul<K, Output = Self> + One,

Source§

fn product<I: Iterator<Item = K>>(iter: I) -> Self

Takes an iterator and generates Self from the elements by multiplying the items.
Source§

impl<'a, RHS, T, R, A> Sub<RHS> for &'a ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, ModuleString<R, T, A>: Clone + Sub<RHS>,

Source§

type Output = <ModuleString<R, T, A> as Sub<RHS>>::Output

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: RHS) -> Self::Output

Performs the - operation. Read more
Source§

impl<RHS, T, R, A> Sub<RHS> for ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, Self: SubAssign<RHS>,

Source§

type Output = ModuleString<R, T, A>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: RHS) -> Self

Performs the - operation. Read more
Source§

impl<'a, T, R, A> SubAssign<&'a ModuleString<R, T, A>> for ModuleString<R, T, A>
where T: Hash + Eq, A: ?Sized, Self: SubAssign<Self> + Clone,

Source§

fn sub_assign(&mut self, rhs: &'a Self)

Performs the -= operation. Read more
Source§

impl<'a, T, R, A> SubAssign<&'a T> for ModuleString<R, T, A>
where T: Hash + Eq + Clone, A: ?Sized, Self: SubAssign<T>,

Source§

fn sub_assign(&mut self, rhs: &'a T)

Performs the -= operation. Read more
Source§

impl<T: Hash + Eq, R: AddAssign + Neg<Output = R>, A: ?Sized> SubAssign<(R, T)> for ModuleString<R, T, A>

Source§

fn sub_assign(&mut self, rhs: (R, T))

Performs the -= operation. Read more
Source§

impl<T: Hash + Eq, R: AddAssign + Neg<Output = R> + One, A: ?Sized> SubAssign<T> for ModuleString<R, T, A>

Source§

fn sub_assign(&mut self, rhs: T)

Performs the -= operation. Read more
Source§

impl<T: Hash + Eq, R: AddAssign + Neg<Output = R>, A: ?Sized> SubAssign for ModuleString<R, T, A>

Source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
Source§

impl<T: Hash + Eq, R: AddAssign, A: ?Sized, K> Sum<K> for ModuleString<R, T, A>
where Self: FromIterator<K>,

Source§

fn sum<I: Iterator<Item = K>>(iter: I) -> Self

Takes an iterator and generates Self from the elements by “summing up” the items.
Source§

impl<T: Hash + Eq, R: AddAssign, A: ?Sized> Zero for ModuleString<R, T, A>

Source§

fn zero() -> Self

Returns the additive identity element of Self, 0. Read more
Source§

fn is_zero(&self) -> bool

Returns true if self is equal to the additive identity.
Source§

fn set_zero(&mut self)

Sets self to the additive identity element of Self, 0.
Source§

impl<T: Hash + Eq, R: AddAssociative, A: ?Sized> AddAssociative for ModuleString<R, T, A>

Source§

impl<T: Hash + Eq, R: AddCommutative, A: ?Sized> AddCommutative for ModuleString<R, T, A>

Source§

impl<T: Hash + Eq, R: Distributive, A: ?Sized> Distributive for ModuleString<R, T, A>

Source§

impl<R, T, A: ?Sized> Eq for ModuleString<R, T, A>
where R: Eq, T: Eq + Hash + Eq,

Source§

impl<T: Hash + Eq, R: MulAssociative, A: ?Sized + AssociativeAlgebraRule<R, T>> MulAssociative for ModuleString<R, T, A>

Source§

impl<T: Hash + Eq, R: MulCommutative, A: ?Sized + CommutativeAlgebraRule<R, T>> MulCommutative for ModuleString<R, T, A>

Auto Trait Implementations§

§

impl<R, T, A> Freeze for ModuleString<R, T, A>
where A: ?Sized,

§

impl<R, T, A> RefUnwindSafe for ModuleString<R, T, A>

§

impl<R, T, A> Send for ModuleString<R, T, A>
where A: Send + ?Sized, T: Send, R: Send,

§

impl<R, T, A> Sync for ModuleString<R, T, A>
where A: Sync + ?Sized, T: Sync, R: Sync,

§

impl<R, T, A> Unpin for ModuleString<R, T, A>
where T: Unpin, R: Unpin, A: ?Sized,

§

impl<R, T, A> UnwindSafe for ModuleString<R, T, A>
where T: UnwindSafe, R: UnwindSafe, A: UnwindSafe + ?Sized,

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§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

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

impl<T> From<!> for T

Source§

fn from(t: !) -> T

Converts to this type from the input type.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<G> MulN for G
where G: AddSemigroup + Zero,

Source§

fn mul_n<N>(self, n: N) -> Self
where N: Natural,

Source§

impl<G> MulZ for G
where G: AddMonoid + Negatable,

Source§

fn mul_z<N>(self, n: N) -> Self
where N: IntegerSubset,

Source§

impl<G> PowN for G
where G: MulSemigroup + One,

Source§

fn pow_n<N>(self, n: N) -> Self
where N: Natural,

Source§

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

Source§

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§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

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

Source§

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.