pub trait TryCoerce<R> {
type Error;
// Required method
fn try_coerce(self) -> Result<R, Self::Error>;
}Expand description
Fallible coercion from Self to type R.
Implement this trait for narrowing conversions that may overflow or lose precision.
Required Associated Types§
Required Methods§
Sourcefn try_coerce(self) -> Result<R, Self::Error>
fn try_coerce(self) -> Result<R, Self::Error>
Attempt to convert self into R.
Implementations on Foreign Types§
Source§impl TryCoerce<bool> for i32
impl TryCoerce<bool> for i32
type Error = LogicalCoerceError
fn try_coerce(self) -> Result<bool, LogicalCoerceError>
Source§impl TryCoerce<f64> for i64
Convert i64 to f64, failing if precision would be lost.
impl TryCoerce<f64> for i64
Convert i64 to f64, failing if precision would be lost.
Only succeeds for values in [-2^53, 2^53].
type Error = CoerceError
fn try_coerce(self) -> Result<f64, CoerceError>
Source§impl TryCoerce<f64> for isize
impl TryCoerce<f64> for isize
type Error = CoerceError
fn try_coerce(self) -> Result<f64, CoerceError>
Source§impl TryCoerce<f64> for u64
Convert u64 to f64, failing if precision would be lost.
impl TryCoerce<f64> for u64
Convert u64 to f64, failing if precision would be lost.
Only succeeds for values ≤ 2^53.
type Error = CoerceError
fn try_coerce(self) -> Result<f64, CoerceError>
Source§impl TryCoerce<f64> for usize
impl TryCoerce<f64> for usize
type Error = CoerceError
fn try_coerce(self) -> Result<f64, CoerceError>
Source§impl TryCoerce<i8> for f64
impl TryCoerce<i8> for f64
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i8> for i16
impl TryCoerce<i8> for i16
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i8> for i32
impl TryCoerce<i8> for i32
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i8> for i64
impl TryCoerce<i8> for i64
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i8> for isize
impl TryCoerce<i8> for isize
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i8> for u8
impl TryCoerce<i8> for u8
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i8> for u16
impl TryCoerce<i8> for u16
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i8> for u32
impl TryCoerce<i8> for u32
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i8> for u64
impl TryCoerce<i8> for u64
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i8> for usize
impl TryCoerce<i8> for usize
type Error = CoerceError
fn try_coerce(self) -> Result<i8, CoerceError>
Source§impl TryCoerce<i16> for f64
impl TryCoerce<i16> for f64
type Error = CoerceError
fn try_coerce(self) -> Result<i16, CoerceError>
Source§impl TryCoerce<i16> for i32
impl TryCoerce<i16> for i32
type Error = CoerceError
fn try_coerce(self) -> Result<i16, CoerceError>
Source§impl TryCoerce<i16> for i64
impl TryCoerce<i16> for i64
type Error = CoerceError
fn try_coerce(self) -> Result<i16, CoerceError>
Source§impl TryCoerce<i16> for isize
impl TryCoerce<i16> for isize
type Error = CoerceError
fn try_coerce(self) -> Result<i16, CoerceError>
Source§impl TryCoerce<i16> for u16
impl TryCoerce<i16> for u16
type Error = CoerceError
fn try_coerce(self) -> Result<i16, CoerceError>
Source§impl TryCoerce<i16> for u32
impl TryCoerce<i16> for u32
type Error = CoerceError
fn try_coerce(self) -> Result<i16, CoerceError>
Source§impl TryCoerce<i16> for u64
impl TryCoerce<i16> for u64
type Error = CoerceError
fn try_coerce(self) -> Result<i16, CoerceError>
Source§impl TryCoerce<i16> for usize
impl TryCoerce<i16> for usize
type Error = CoerceError
fn try_coerce(self) -> Result<i16, CoerceError>
Source§impl TryCoerce<i32> for f32
impl TryCoerce<i32> for f32
type Error = CoerceError
fn try_coerce(self) -> Result<i32, CoerceError>
Source§impl TryCoerce<i32> for f64
impl TryCoerce<i32> for f64
type Error = CoerceError
fn try_coerce(self) -> Result<i32, CoerceError>
Source§impl TryCoerce<i32> for i64
impl TryCoerce<i32> for i64
type Error = CoerceError
fn try_coerce(self) -> Result<i32, CoerceError>
Source§impl TryCoerce<i32> for isize
impl TryCoerce<i32> for isize
type Error = CoerceError
fn try_coerce(self) -> Result<i32, CoerceError>
Source§impl TryCoerce<i32> for u32
impl TryCoerce<i32> for u32
type Error = CoerceError
fn try_coerce(self) -> Result<i32, CoerceError>
Source§impl TryCoerce<i32> for u64
impl TryCoerce<i32> for u64
type Error = CoerceError
fn try_coerce(self) -> Result<i32, CoerceError>
Source§impl TryCoerce<i32> for usize
impl TryCoerce<i32> for usize
type Error = CoerceError
fn try_coerce(self) -> Result<i32, CoerceError>
Source§impl TryCoerce<i64> for f64
Convert f64 to i64, validating exact representation.
impl TryCoerce<i64> for f64
Convert f64 to i64, validating exact representation.
type Error = CoerceError
fn try_coerce(self) -> Result<i64, CoerceError>
Source§impl TryCoerce<isize> for f64
impl TryCoerce<isize> for f64
type Error = CoerceError
fn try_coerce(self) -> Result<isize, CoerceError>
Source§impl TryCoerce<u8> for f32
impl TryCoerce<u8> for f32
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for f64
impl TryCoerce<u8> for f64
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for i8
impl TryCoerce<u8> for i8
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for i16
impl TryCoerce<u8> for i16
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for i32
impl TryCoerce<u8> for i32
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for i64
impl TryCoerce<u8> for i64
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for isize
impl TryCoerce<u8> for isize
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for u16
impl TryCoerce<u8> for u16
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for u32
impl TryCoerce<u8> for u32
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for u64
impl TryCoerce<u8> for u64
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u8> for usize
impl TryCoerce<u8> for usize
type Error = CoerceError
fn try_coerce(self) -> Result<u8, CoerceError>
Source§impl TryCoerce<u16> for f64
impl TryCoerce<u16> for f64
type Error = CoerceError
fn try_coerce(self) -> Result<u16, CoerceError>
Source§impl TryCoerce<u16> for i8
impl TryCoerce<u16> for i8
type Error = CoerceError
fn try_coerce(self) -> Result<u16, CoerceError>
Source§impl TryCoerce<u16> for i16
impl TryCoerce<u16> for i16
type Error = CoerceError
fn try_coerce(self) -> Result<u16, CoerceError>
Source§impl TryCoerce<u16> for i32
impl TryCoerce<u16> for i32
type Error = CoerceError
fn try_coerce(self) -> Result<u16, CoerceError>
Source§impl TryCoerce<u16> for i64
impl TryCoerce<u16> for i64
type Error = CoerceError
fn try_coerce(self) -> Result<u16, CoerceError>
Source§impl TryCoerce<u16> for isize
impl TryCoerce<u16> for isize
type Error = CoerceError
fn try_coerce(self) -> Result<u16, CoerceError>
Source§impl TryCoerce<u16> for u32
impl TryCoerce<u16> for u32
type Error = CoerceError
fn try_coerce(self) -> Result<u16, CoerceError>
Source§impl TryCoerce<u16> for u64
impl TryCoerce<u16> for u64
type Error = CoerceError
fn try_coerce(self) -> Result<u16, CoerceError>
Source§impl TryCoerce<u16> for usize
impl TryCoerce<u16> for usize
type Error = CoerceError
fn try_coerce(self) -> Result<u16, CoerceError>
Source§impl TryCoerce<u32> for f64
impl TryCoerce<u32> for f64
type Error = CoerceError
fn try_coerce(self) -> Result<u32, CoerceError>
Source§impl TryCoerce<u32> for i32
i32 -> u32: can fail if negative
impl TryCoerce<u32> for i32
i32 -> u32: can fail if negative
type Error = CoerceError
fn try_coerce(self) -> Result<u32, CoerceError>
Source§impl TryCoerce<u64> for f64
impl TryCoerce<u64> for f64
type Error = CoerceError
fn try_coerce(self) -> Result<u64, CoerceError>
Source§impl TryCoerce<u64> for i32
i32 -> u64: can fail if negative
impl TryCoerce<u64> for i32
i32 -> u64: can fail if negative
type Error = CoerceError
fn try_coerce(self) -> Result<u64, CoerceError>
Source§impl TryCoerce<usize> for f64
impl TryCoerce<usize> for f64
type Error = CoerceError
fn try_coerce(self) -> Result<usize, CoerceError>
Source§impl TryCoerce<usize> for i32
i32 -> usize: can fail if negative
impl TryCoerce<usize> for i32
i32 -> usize: can fail if negative
type Error = CoerceError
fn try_coerce(self) -> Result<usize, CoerceError>
Source§impl TryCoerce<NonZero<i8>> for i8
impl TryCoerce<NonZero<i8>> for i8
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroI8, CoerceError>
Source§impl TryCoerce<NonZero<i8>> for i32
i32 -> NonZeroI8: narrow then check zero
impl TryCoerce<NonZero<i8>> for i32
i32 -> NonZeroI8: narrow then check zero
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroI8, CoerceError>
Source§impl TryCoerce<NonZero<i16>> for i16
impl TryCoerce<NonZero<i16>> for i16
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroI16, CoerceError>
Source§impl TryCoerce<NonZero<i16>> for i32
i32 -> NonZeroI16: narrow then check zero
impl TryCoerce<NonZero<i16>> for i32
i32 -> NonZeroI16: narrow then check zero
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroI16, CoerceError>
Source§impl TryCoerce<NonZero<i32>> for i32
impl TryCoerce<NonZero<i32>> for i32
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroI32, CoerceError>
Source§impl TryCoerce<NonZero<i64>> for i32
i32 -> NonZeroI64: widen then check zero
impl TryCoerce<NonZero<i64>> for i32
i32 -> NonZeroI64: widen then check zero
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroI64, CoerceError>
Source§impl TryCoerce<NonZero<i64>> for i64
impl TryCoerce<NonZero<i64>> for i64
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroI64, CoerceError>
Source§impl TryCoerce<NonZero<isize>> for i32
i32 -> NonZeroIsize: widen then check zero
impl TryCoerce<NonZero<isize>> for i32
i32 -> NonZeroIsize: widen then check zero
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroIsize, CoerceError>
Source§impl TryCoerce<NonZero<isize>> for isize
impl TryCoerce<NonZero<isize>> for isize
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroIsize, CoerceError>
Source§impl TryCoerce<NonZero<u8>> for i32
i32 -> NonZeroU8: check non-negative, narrow, then check zero
impl TryCoerce<NonZero<u8>> for i32
i32 -> NonZeroU8: check non-negative, narrow, then check zero
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroU8, CoerceError>
Source§impl TryCoerce<NonZero<u8>> for u8
impl TryCoerce<NonZero<u8>> for u8
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroU8, CoerceError>
Source§impl TryCoerce<NonZero<u16>> for i32
i32 -> NonZeroU16: check non-negative, narrow, then check zero
impl TryCoerce<NonZero<u16>> for i32
i32 -> NonZeroU16: check non-negative, narrow, then check zero
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroU16, CoerceError>
Source§impl TryCoerce<NonZero<u16>> for u16
impl TryCoerce<NonZero<u16>> for u16
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroU16, CoerceError>
Source§impl TryCoerce<NonZero<u32>> for i32
i32 -> NonZeroU32: check non-negative and non-zero
impl TryCoerce<NonZero<u32>> for i32
i32 -> NonZeroU32: check non-negative and non-zero
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroU32, CoerceError>
Source§impl TryCoerce<NonZero<u32>> for u32
impl TryCoerce<NonZero<u32>> for u32
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroU32, CoerceError>
Source§impl TryCoerce<NonZero<u64>> for i32
i32 -> NonZeroU64: check non-negative and non-zero
impl TryCoerce<NonZero<u64>> for i32
i32 -> NonZeroU64: check non-negative and non-zero
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroU64, CoerceError>
Source§impl TryCoerce<NonZero<u64>> for u64
impl TryCoerce<NonZero<u64>> for u64
type Error = CoerceError
fn try_coerce(self) -> Result<NonZeroU64, CoerceError>
Source§impl TryCoerce<NonZero<usize>> for i32
i32 -> NonZeroUsize: check non-negative and non-zero
impl TryCoerce<NonZero<usize>> for i32
i32 -> NonZeroUsize: check non-negative and non-zero