IntCast

Trait 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, specialization with default types is currently a pain in the ass. Furthermore, this trait is simpler.

Required Methods§

Source

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

Maps the given integer into this ring.

For the difference to RingStore::coerce() or RingStore::can_hom(), see the documentation of IntCast.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so 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 MPZBase

Available on crate feature mpir only.
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 MPZBase

Available on crate feature mpir only.
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 MPZBase

Available on crate feature mpir only.
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 MPZBase

Available on crate feature mpir only.
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 MPZBase

Available on crate feature mpir only.
Source§

impl IntCast<MPZBase> for StaticRingBase<i8>

Available on crate feature mpir only.
Source§

impl IntCast<MPZBase> for StaticRingBase<i16>

Available on crate feature mpir only.
Source§

impl IntCast<MPZBase> for StaticRingBase<i32>

Available on crate feature mpir only.
Source§

impl IntCast<MPZBase> for StaticRingBase<i64>

Available on crate feature mpir only.
Source§

impl IntCast<MPZBase> for StaticRingBase<i128>

Available on crate feature mpir only.
Source§

impl IntCast<MPZBase> for MPZBase

Available on crate feature mpir only.
Source§

impl IntCast<MPZBase> for RustBigintRingBase

Available on crate feature mpir only.
Source§

impl IntCast<RustBigintRingBase> for MPZBase

Available on crate feature mpir only.
Source§

impl<A1: Allocator + Clone, A2: Allocator + Clone> IntCast<RustBigintRingBase<A2>> for RustBigintRingBase<A1>

Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i8>> for RustBigintRingBase<A>

Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i16>> for RustBigintRingBase<A>

Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i32>> for RustBigintRingBase<A>

Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i64>> for RustBigintRingBase<A>

Source§

impl<A: Allocator + Clone> IntCast<StaticRingBase<i128>> for RustBigintRingBase<A>

Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i8>

Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i16>

Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i32>

Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i64>

Source§

impl<A: Allocator + Clone> IntCast<RustBigintRingBase<A>> for StaticRingBase<i128>

Source§

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