Skip to main content

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

Implementors§

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<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<RustBigintRingBase> for MPZBase

Available on crate feature mpir only.
Source§

impl IntCast<StaticRingBase<i8>> for MPZBase

Available on crate feature mpir only.
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<i16>> 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<i32>> 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<i64>> 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<i128>> 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<A1: Allocator + Clone, A2: Allocator + Clone> IntCast<RustBigintRingBase<A2>> for RustBigintRingBase<A1>

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<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<F: ?Sized + IntegerRing, T: ?Sized + IntegerRing> IntCast<F> for T