Trait feanor_math::integer::IntCast

source ·
pub trait IntCast<F: ?Sized + IntegerRing>: IntegerRing {
    // Required method
    fn cast(&self, from: &F, value: F::Element) -> Self::Element;
}
Expand description

Helper trait to simplify conversion between ints.

More concretely, IntCast defines a conversion between two integer rings, and is default-implemented for all integer rings using a double-and-and technique. All implementors of integer rings are encouraged to provide specializations for improved performance.

§Why yet another conversion trait?

It is a common requirement to convert between arbitrary (i.e. generic) integer rings. To achieve this, we require a blanket implementation anyway.

Now it would be possible to just provide a blanket implementation of CanHomFrom and specialize it for all integer rings. However, it turned out that in all implementations, the homomorphism requires no additional data and always exists. Hence, it seemed easier to add another, simpler trait for the same thing.

Required Methods§

source

fn cast(&self, from: &F, value: F::Element) -> Self::Element

Object Safety§

This trait is not object safe.

Implementors§

source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i8>

source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i16>

source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i32>

source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i64>

source§

impl IntCast<StaticRingBase<i8>> for StaticRingBase<i128>

source§

impl IntCast<StaticRingBase<i8>> for RustBigintRingBase

source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i8>

source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i16>

source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i32>

source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i64>

source§

impl IntCast<StaticRingBase<i16>> for StaticRingBase<i128>

source§

impl IntCast<StaticRingBase<i16>> for RustBigintRingBase

source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i8>

source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i16>

source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i32>

source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i64>

source§

impl IntCast<StaticRingBase<i32>> for StaticRingBase<i128>

source§

impl IntCast<StaticRingBase<i32>> for RustBigintRingBase

source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i8>

source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i16>

source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i32>

source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i64>

source§

impl IntCast<StaticRingBase<i64>> for StaticRingBase<i128>

source§

impl IntCast<StaticRingBase<i64>> for RustBigintRingBase

source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i8>

source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i16>

source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i32>

source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i64>

source§

impl IntCast<StaticRingBase<i128>> for StaticRingBase<i128>

source§

impl IntCast<StaticRingBase<i128>> for RustBigintRingBase

source§

impl IntCast<RustBigintRingBase> for StaticRingBase<i8>

source§

impl IntCast<RustBigintRingBase> for StaticRingBase<i16>

source§

impl IntCast<RustBigintRingBase> for StaticRingBase<i32>

source§

impl IntCast<RustBigintRingBase> for StaticRingBase<i64>

source§

impl IntCast<RustBigintRingBase> for StaticRingBase<i128>

source§

impl IntCast<RustBigintRingBase> for RustBigintRingBase

source§

impl<F: ?Sized + IntegerRing, T: ?Sized + IntegerRing> IntCast<F> for T