conv

Trait ApproxFrom

Source
pub trait ApproxFrom<Src, Scheme = DefaultApprox>: Sized
where Scheme: ApproxScheme,
{ type Err: Error; // Required method fn approx_from(src: Src) -> Result<Self, Self::Err>; }
Expand description

This trait is used to perform a conversion that is permitted to approximate the result, but not to wrap or saturate the result to fit into the destination type’s representable range.

Where possible, prefer implementing this trait over ApproxInto, but prefer using ApproxInto for generic constraints.

§Details

All implementations of this trait must provide a conversion that can be separated into two logical steps: an approximation transform, and a representation transform.

The “approximation transform” step involves transforming the input value into an approximately equivalent value which is supported by the target type without taking the target type’s representable range into account. For example, this might involve rounding or truncating a floating point value to an integer, or reducing the accuracy of a floating point value.

The “representation transform” step exactly rewrites the value from the source type’s binary representation into the destination type’s binary representation. This step may not transform the value in any way. If the result of the approximation is not representable, the conversion must fail.

The major reason for this formulation is to exactly define what happens when converting between floating point and integer types. Often, it is unclear what happens to floating point values beyond the range of the target integer type. Do they saturate, wrap, or cause a failure?

With this formulation, it is well-defined: if a floating point value is outside the representable range, the conversion fails. This allows users to distinguish between approximation and range violation, and act accordingly.

Required Associated Types§

Source

type Err: Error

The error type produced by a failed conversion.

Required Methods§

Source

fn approx_from(src: Src) -> Result<Self, Self::Err>

Convert the given value into an approximately equivalent representation.

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.

Implementations on Foreign Types§

Source§

impl ApproxFrom<f32> for i8

Source§

impl ApproxFrom<f32> for i16

Source§

impl ApproxFrom<f32> for i32

Source§

impl ApproxFrom<f32> for i64

Source§

impl ApproxFrom<f32> for isize

Source§

impl ApproxFrom<f32> for u8

Source§

impl ApproxFrom<f32> for u16

Source§

impl ApproxFrom<f32> for u32

Source§

impl ApproxFrom<f32> for u64

Source§

impl ApproxFrom<f32> for usize

Source§

impl ApproxFrom<f32, RoundToNearest> for i8

Source§

impl ApproxFrom<f32, RoundToNearest> for i16

Source§

impl ApproxFrom<f32, RoundToNearest> for i32

Source§

impl ApproxFrom<f32, RoundToNearest> for i64

Source§

impl ApproxFrom<f32, RoundToNearest> for isize

Source§

impl ApproxFrom<f32, RoundToNearest> for u8

Source§

impl ApproxFrom<f32, RoundToNearest> for u16

Source§

impl ApproxFrom<f32, RoundToNearest> for u32

Source§

impl ApproxFrom<f32, RoundToNearest> for u64

Source§

impl ApproxFrom<f32, RoundToNearest> for usize

Source§

impl ApproxFrom<f32, RoundToNegInf> for i8

Source§

impl ApproxFrom<f32, RoundToNegInf> for i16

Source§

impl ApproxFrom<f32, RoundToNegInf> for i32

Source§

impl ApproxFrom<f32, RoundToNegInf> for i64

Source§

impl ApproxFrom<f32, RoundToNegInf> for isize

Source§

impl ApproxFrom<f32, RoundToNegInf> for u8

Source§

impl ApproxFrom<f32, RoundToNegInf> for u16

Source§

impl ApproxFrom<f32, RoundToNegInf> for u32

Source§

impl ApproxFrom<f32, RoundToNegInf> for u64

Source§

impl ApproxFrom<f32, RoundToNegInf> for usize

Source§

impl ApproxFrom<f32, RoundToPosInf> for i8

Source§

impl ApproxFrom<f32, RoundToPosInf> for i16

Source§

impl ApproxFrom<f32, RoundToPosInf> for i32

Source§

impl ApproxFrom<f32, RoundToPosInf> for i64

Source§

impl ApproxFrom<f32, RoundToPosInf> for isize

Source§

impl ApproxFrom<f32, RoundToPosInf> for u8

Source§

impl ApproxFrom<f32, RoundToPosInf> for u16

Source§

impl ApproxFrom<f32, RoundToPosInf> for u32

Source§

impl ApproxFrom<f32, RoundToPosInf> for u64

Source§

impl ApproxFrom<f32, RoundToPosInf> for usize

Source§

impl ApproxFrom<f32, RoundToZero> for i8

Source§

impl ApproxFrom<f32, RoundToZero> for i16

Source§

impl ApproxFrom<f32, RoundToZero> for i32

Source§

impl ApproxFrom<f32, RoundToZero> for i64

Source§

impl ApproxFrom<f32, RoundToZero> for isize

Source§

impl ApproxFrom<f32, RoundToZero> for u8

Source§

impl ApproxFrom<f32, RoundToZero> for u16

Source§

impl ApproxFrom<f32, RoundToZero> for u32

Source§

impl ApproxFrom<f32, RoundToZero> for u64

Source§

impl ApproxFrom<f32, RoundToZero> for usize

Source§

impl ApproxFrom<f64> for f32

Source§

impl ApproxFrom<f64> for i8

Source§

impl ApproxFrom<f64> for i16

Source§

impl ApproxFrom<f64> for i32

Source§

impl ApproxFrom<f64> for i64

Source§

impl ApproxFrom<f64> for isize

Source§

impl ApproxFrom<f64> for u8

Source§

impl ApproxFrom<f64> for u16

Source§

impl ApproxFrom<f64> for u32

Source§

impl ApproxFrom<f64> for u64

Source§

impl ApproxFrom<f64> for usize

Source§

impl ApproxFrom<f64, RoundToNearest> for i8

Source§

impl ApproxFrom<f64, RoundToNearest> for i16

Source§

impl ApproxFrom<f64, RoundToNearest> for i32

Source§

impl ApproxFrom<f64, RoundToNearest> for i64

Source§

impl ApproxFrom<f64, RoundToNearest> for isize

Source§

impl ApproxFrom<f64, RoundToNearest> for u8

Source§

impl ApproxFrom<f64, RoundToNearest> for u16

Source§

impl ApproxFrom<f64, RoundToNearest> for u32

Source§

impl ApproxFrom<f64, RoundToNearest> for u64

Source§

impl ApproxFrom<f64, RoundToNearest> for usize

Source§

impl ApproxFrom<f64, RoundToNegInf> for i8

Source§

impl ApproxFrom<f64, RoundToNegInf> for i16

Source§

impl ApproxFrom<f64, RoundToNegInf> for i32

Source§

impl ApproxFrom<f64, RoundToNegInf> for i64

Source§

impl ApproxFrom<f64, RoundToNegInf> for isize

Source§

impl ApproxFrom<f64, RoundToNegInf> for u8

Source§

impl ApproxFrom<f64, RoundToNegInf> for u16

Source§

impl ApproxFrom<f64, RoundToNegInf> for u32

Source§

impl ApproxFrom<f64, RoundToNegInf> for u64

Source§

impl ApproxFrom<f64, RoundToNegInf> for usize

Source§

impl ApproxFrom<f64, RoundToPosInf> for i8

Source§

impl ApproxFrom<f64, RoundToPosInf> for i16

Source§

impl ApproxFrom<f64, RoundToPosInf> for i32

Source§

impl ApproxFrom<f64, RoundToPosInf> for i64

Source§

impl ApproxFrom<f64, RoundToPosInf> for isize

Source§

impl ApproxFrom<f64, RoundToPosInf> for u8

Source§

impl ApproxFrom<f64, RoundToPosInf> for u16

Source§

impl ApproxFrom<f64, RoundToPosInf> for u32

Source§

impl ApproxFrom<f64, RoundToPosInf> for u64

Source§

impl ApproxFrom<f64, RoundToPosInf> for usize

Source§

impl ApproxFrom<f64, RoundToZero> for i8

Source§

impl ApproxFrom<f64, RoundToZero> for i16

Source§

impl ApproxFrom<f64, RoundToZero> for i32

Source§

impl ApproxFrom<f64, RoundToZero> for i64

Source§

impl ApproxFrom<f64, RoundToZero> for isize

Source§

impl ApproxFrom<f64, RoundToZero> for u8

Source§

impl ApproxFrom<f64, RoundToZero> for u16

Source§

impl ApproxFrom<f64, RoundToZero> for u32

Source§

impl ApproxFrom<f64, RoundToZero> for u64

Source§

impl ApproxFrom<f64, RoundToZero> for usize

Source§

impl ApproxFrom<i8> for f32

Source§

impl ApproxFrom<i8> for f64

Source§

impl ApproxFrom<i8> for i16

Source§

impl ApproxFrom<i8> for i32

Source§

impl ApproxFrom<i8> for i64

Source§

impl ApproxFrom<i8> for isize

Source§

impl ApproxFrom<i8> for u8

Source§

impl ApproxFrom<i8> for u16

Source§

impl ApproxFrom<i8> for u32

Source§

impl ApproxFrom<i8> for u64

Source§

impl ApproxFrom<i8> for usize

Source§

impl ApproxFrom<i8, Wrapping> for f32

Source§

impl ApproxFrom<i8, Wrapping> for f64

Source§

impl ApproxFrom<i8, Wrapping> for i16

Source§

impl ApproxFrom<i8, Wrapping> for i32

Source§

impl ApproxFrom<i8, Wrapping> for i64

Source§

impl ApproxFrom<i8, Wrapping> for isize

Source§

impl ApproxFrom<i8, Wrapping> for u8

Source§

impl ApproxFrom<i8, Wrapping> for u16

Source§

impl ApproxFrom<i8, Wrapping> for u32

Source§

impl ApproxFrom<i8, Wrapping> for u64

Source§

impl ApproxFrom<i8, Wrapping> for usize

Source§

impl ApproxFrom<i16> for f32

Source§

impl ApproxFrom<i16> for f64

Source§

impl ApproxFrom<i16> for i8

Source§

impl ApproxFrom<i16> for i32

Source§

impl ApproxFrom<i16> for i64

Source§

impl ApproxFrom<i16> for isize

Source§

impl ApproxFrom<i16> for u8

Source§

impl ApproxFrom<i16> for u16

Source§

impl ApproxFrom<i16> for u32

Source§

impl ApproxFrom<i16> for u64

Source§

impl ApproxFrom<i16> for usize

Source§

impl ApproxFrom<i16, Wrapping> for f32

Source§

impl ApproxFrom<i16, Wrapping> for f64

Source§

impl ApproxFrom<i16, Wrapping> for i8

Source§

impl ApproxFrom<i16, Wrapping> for i32

Source§

impl ApproxFrom<i16, Wrapping> for i64

Source§

impl ApproxFrom<i16, Wrapping> for isize

Source§

impl ApproxFrom<i16, Wrapping> for u8

Source§

impl ApproxFrom<i16, Wrapping> for u16

Source§

impl ApproxFrom<i16, Wrapping> for u32

Source§

impl ApproxFrom<i16, Wrapping> for u64

Source§

impl ApproxFrom<i16, Wrapping> for usize

Source§

impl ApproxFrom<i32> for f32

Source§

impl ApproxFrom<i32> for f64

Source§

impl ApproxFrom<i32> for i8

Source§

impl ApproxFrom<i32> for i16

Source§

impl ApproxFrom<i32> for i64

Source§

impl ApproxFrom<i32> for isize

Source§

impl ApproxFrom<i32> for u8

Source§

impl ApproxFrom<i32> for u16

Source§

impl ApproxFrom<i32> for u32

Source§

impl ApproxFrom<i32> for u64

Source§

impl ApproxFrom<i32> for usize

Source§

impl ApproxFrom<i32, Wrapping> for f64

Source§

impl ApproxFrom<i32, Wrapping> for i8

Source§

impl ApproxFrom<i32, Wrapping> for i16

Source§

impl ApproxFrom<i32, Wrapping> for i64

Source§

impl ApproxFrom<i32, Wrapping> for isize

Source§

impl ApproxFrom<i32, Wrapping> for u8

Source§

impl ApproxFrom<i32, Wrapping> for u16

Source§

impl ApproxFrom<i32, Wrapping> for u32

Source§

impl ApproxFrom<i32, Wrapping> for u64

Source§

impl ApproxFrom<i32, Wrapping> for usize

Source§

impl ApproxFrom<i64> for f32

Source§

impl ApproxFrom<i64> for f64

Source§

impl ApproxFrom<i64> for i8

Source§

impl ApproxFrom<i64> for i16

Source§

impl ApproxFrom<i64> for i32

Source§

impl ApproxFrom<i64> for isize

Source§

impl ApproxFrom<i64> for u8

Source§

impl ApproxFrom<i64> for u16

Source§

impl ApproxFrom<i64> for u32

Source§

impl ApproxFrom<i64> for u64

Source§

impl ApproxFrom<i64> for usize

Source§

impl ApproxFrom<i64, Wrapping> for i8

Source§

impl ApproxFrom<i64, Wrapping> for i16

Source§

impl ApproxFrom<i64, Wrapping> for i32

Source§

impl ApproxFrom<i64, Wrapping> for isize

Source§

impl ApproxFrom<i64, Wrapping> for u8

Source§

impl ApproxFrom<i64, Wrapping> for u16

Source§

impl ApproxFrom<i64, Wrapping> for u32

Source§

impl ApproxFrom<i64, Wrapping> for u64

Source§

impl ApproxFrom<i64, Wrapping> for usize

Source§

impl ApproxFrom<isize> for f32

Source§

impl ApproxFrom<isize> for f64

Source§

impl ApproxFrom<isize> for i8

Source§

impl ApproxFrom<isize> for i16

Source§

impl ApproxFrom<isize> for i32

Source§

impl ApproxFrom<isize> for i64

Source§

impl ApproxFrom<isize> for u8

Source§

impl ApproxFrom<isize> for u16

Source§

impl ApproxFrom<isize> for u32

Source§

impl ApproxFrom<isize> for u64

Source§

impl ApproxFrom<isize> for usize

Source§

impl ApproxFrom<isize, Wrapping> for i8

Source§

impl ApproxFrom<isize, Wrapping> for i16

Source§

impl ApproxFrom<isize, Wrapping> for i32

Source§

impl ApproxFrom<isize, Wrapping> for i64

Source§

impl ApproxFrom<isize, Wrapping> for u8

Source§

impl ApproxFrom<isize, Wrapping> for u16

Source§

impl ApproxFrom<isize, Wrapping> for u32

Source§

impl ApproxFrom<isize, Wrapping> for u64

Source§

impl ApproxFrom<isize, Wrapping> for usize

Source§

impl ApproxFrom<u8> for f32

Source§

impl ApproxFrom<u8> for f64

Source§

impl ApproxFrom<u8> for i8

Source§

impl ApproxFrom<u8> for i16

Source§

impl ApproxFrom<u8> for i32

Source§

impl ApproxFrom<u8> for i64

Source§

impl ApproxFrom<u8> for isize

Source§

impl ApproxFrom<u8> for u16

Source§

impl ApproxFrom<u8> for u32

Source§

impl ApproxFrom<u8> for u64

Source§

impl ApproxFrom<u8> for usize

Source§

impl ApproxFrom<u8, Wrapping> for f32

Source§

impl ApproxFrom<u8, Wrapping> for f64

Source§

impl ApproxFrom<u8, Wrapping> for i8

Source§

impl ApproxFrom<u8, Wrapping> for i16

Source§

impl ApproxFrom<u8, Wrapping> for i32

Source§

impl ApproxFrom<u8, Wrapping> for i64

Source§

impl ApproxFrom<u8, Wrapping> for isize

Source§

impl ApproxFrom<u8, Wrapping> for u16

Source§

impl ApproxFrom<u8, Wrapping> for u32

Source§

impl ApproxFrom<u8, Wrapping> for u64

Source§

impl ApproxFrom<u8, Wrapping> for usize

Source§

impl ApproxFrom<u16> for f32

Source§

impl ApproxFrom<u16> for f64

Source§

impl ApproxFrom<u16> for i8

Source§

impl ApproxFrom<u16> for i16

Source§

impl ApproxFrom<u16> for i32

Source§

impl ApproxFrom<u16> for i64

Source§

impl ApproxFrom<u16> for isize

Source§

impl ApproxFrom<u16> for u8

Source§

impl ApproxFrom<u16> for u32

Source§

impl ApproxFrom<u16> for u64

Source§

impl ApproxFrom<u16> for usize

Source§

impl ApproxFrom<u16, Wrapping> for f32

Source§

impl ApproxFrom<u16, Wrapping> for f64

Source§

impl ApproxFrom<u16, Wrapping> for i8

Source§

impl ApproxFrom<u16, Wrapping> for i16

Source§

impl ApproxFrom<u16, Wrapping> for i32

Source§

impl ApproxFrom<u16, Wrapping> for i64

Source§

impl ApproxFrom<u16, Wrapping> for isize

Source§

impl ApproxFrom<u16, Wrapping> for u8

Source§

impl ApproxFrom<u16, Wrapping> for u32

Source§

impl ApproxFrom<u16, Wrapping> for u64

Source§

impl ApproxFrom<u16, Wrapping> for usize

Source§

impl ApproxFrom<u32> for f32

Source§

impl ApproxFrom<u32> for f64

Source§

impl ApproxFrom<u32> for i8

Source§

impl ApproxFrom<u32> for i16

Source§

impl ApproxFrom<u32> for i32

Source§

impl ApproxFrom<u32> for i64

Source§

impl ApproxFrom<u32> for isize

Source§

impl ApproxFrom<u32> for u8

Source§

impl ApproxFrom<u32> for u16

Source§

impl ApproxFrom<u32> for u64

Source§

impl ApproxFrom<u32> for usize

Source§

impl ApproxFrom<u32, Wrapping> for f64

Source§

impl ApproxFrom<u32, Wrapping> for i8

Source§

impl ApproxFrom<u32, Wrapping> for i16

Source§

impl ApproxFrom<u32, Wrapping> for i32

Source§

impl ApproxFrom<u32, Wrapping> for i64

Source§

impl ApproxFrom<u32, Wrapping> for isize

Source§

impl ApproxFrom<u32, Wrapping> for u8

Source§

impl ApproxFrom<u32, Wrapping> for u16

Source§

impl ApproxFrom<u32, Wrapping> for u64

Source§

impl ApproxFrom<u32, Wrapping> for usize

Source§

impl ApproxFrom<u64> for f32

Source§

impl ApproxFrom<u64> for f64

Source§

impl ApproxFrom<u64> for i8

Source§

impl ApproxFrom<u64> for i16

Source§

impl ApproxFrom<u64> for i32

Source§

impl ApproxFrom<u64> for i64

Source§

impl ApproxFrom<u64> for isize

Source§

impl ApproxFrom<u64> for u8

Source§

impl ApproxFrom<u64> for u16

Source§

impl ApproxFrom<u64> for u32

Source§

impl ApproxFrom<u64> for usize

Source§

impl ApproxFrom<u64, Wrapping> for i8

Source§

impl ApproxFrom<u64, Wrapping> for i16

Source§

impl ApproxFrom<u64, Wrapping> for i32

Source§

impl ApproxFrom<u64, Wrapping> for i64

Source§

impl ApproxFrom<u64, Wrapping> for isize

Source§

impl ApproxFrom<u64, Wrapping> for u8

Source§

impl ApproxFrom<u64, Wrapping> for u16

Source§

impl ApproxFrom<u64, Wrapping> for u32

Source§

impl ApproxFrom<u64, Wrapping> for usize

Source§

impl ApproxFrom<usize> for f32

Source§

impl ApproxFrom<usize> for f64

Source§

impl ApproxFrom<usize> for i8

Source§

impl ApproxFrom<usize> for i16

Source§

impl ApproxFrom<usize> for i32

Source§

impl ApproxFrom<usize> for i64

Source§

impl ApproxFrom<usize> for isize

Source§

impl ApproxFrom<usize> for u8

Source§

impl ApproxFrom<usize> for u16

Source§

impl ApproxFrom<usize> for u32

Source§

impl ApproxFrom<usize> for u64

Source§

impl ApproxFrom<usize, Wrapping> for i8

Source§

impl ApproxFrom<usize, Wrapping> for i16

Source§

impl ApproxFrom<usize, Wrapping> for i32

Source§

impl ApproxFrom<usize, Wrapping> for i64

Source§

impl ApproxFrom<usize, Wrapping> for isize

Source§

impl ApproxFrom<usize, Wrapping> for u8

Source§

impl ApproxFrom<usize, Wrapping> for u16

Source§

impl ApproxFrom<usize, Wrapping> for u32

Source§

impl ApproxFrom<usize, Wrapping> for u64

Source§

impl<Scheme> ApproxFrom<f32, Scheme> for f64
where Scheme: ApproxScheme,

Implementors§

Source§

impl<Src, Scheme> ApproxFrom<Src, Scheme> for Src
where Scheme: ApproxScheme,