deep_causality_num/complex/complex_number/
cast.rs1use crate::{AsPrimitive, Complex, FromPrimitive, NumCast, RealField, ToPrimitive};
6
7impl<T, U> AsPrimitive<U> for Complex<T>
9where
10 T: RealField + AsPrimitive<U> + 'static,
11 U: 'static + Copy,
12{
13 #[inline]
14 fn as_(self) -> U {
15 self.re.as_()
16 }
17}
18
19impl<T: RealField + NumCast> NumCast for Complex<T> {
21 #[inline]
22 fn from<N: ToPrimitive>(n: N) -> Option<Self> {
23 T::from(n).map(Self::from_real)
24 }
25}
26
27impl<T: RealField + FromPrimitive> FromPrimitive for Complex<T> {
29 fn from_isize(n: isize) -> Option<Self> {
30 T::from_isize(n).map(Self::from_real)
31 }
32 fn from_i8(n: i8) -> Option<Self> {
33 T::from_i8(n).map(Self::from_real)
34 }
35 fn from_i16(n: i16) -> Option<Self> {
36 T::from_i16(n).map(Self::from_real)
37 }
38 fn from_i32(n: i32) -> Option<Self> {
39 T::from_i32(n).map(Self::from_real)
40 }
41 fn from_i64(n: i64) -> Option<Self> {
42 T::from_i64(n).map(Self::from_real)
43 }
44 fn from_i128(n: i128) -> Option<Self> {
45 T::from_i128(n).map(Self::from_real)
46 }
47 fn from_usize(n: usize) -> Option<Self> {
48 T::from_usize(n).map(Self::from_real)
49 }
50 fn from_u8(n: u8) -> Option<Self> {
51 T::from_u8(n).map(Self::from_real)
52 }
53 fn from_u16(n: u16) -> Option<Self> {
54 T::from_u16(n).map(Self::from_real)
55 }
56 fn from_u32(n: u32) -> Option<Self> {
57 T::from_u32(n).map(Self::from_real)
58 }
59 fn from_u64(n: u64) -> Option<Self> {
60 T::from_u64(n).map(Self::from_real)
61 }
62 fn from_u128(n: u128) -> Option<Self> {
63 T::from_u128(n).map(Self::from_real)
64 }
65 fn from_f32(n: f32) -> Option<Self> {
66 T::from_f32(n).map(Self::from_real)
67 }
68 fn from_f64(n: f64) -> Option<Self> {
69 T::from_f64(n).map(Self::from_real)
70 }
71}
72
73impl<T: RealField + ToPrimitive> ToPrimitive for Complex<T> {
75 fn to_isize(&self) -> Option<isize> {
76 self.re.to_isize()
77 }
78 fn to_i8(&self) -> Option<i8> {
79 self.re.to_i8()
80 }
81 fn to_i16(&self) -> Option<i16> {
82 self.re.to_i16()
83 }
84 fn to_i32(&self) -> Option<i32> {
85 self.re.to_i32()
86 }
87 fn to_i64(&self) -> Option<i64> {
88 self.re.to_i64()
89 }
90 fn to_i128(&self) -> Option<i128> {
91 self.re.to_i128()
92 }
93 fn to_usize(&self) -> Option<usize> {
94 self.re.to_usize()
95 }
96 fn to_u8(&self) -> Option<u8> {
97 self.re.to_u8()
98 }
99 fn to_u16(&self) -> Option<u16> {
100 self.re.to_u16()
101 }
102 fn to_u32(&self) -> Option<u32> {
103 self.re.to_u32()
104 }
105 fn to_u64(&self) -> Option<u64> {
106 self.re.to_u64()
107 }
108 fn to_u128(&self) -> Option<u128> {
109 self.re.to_u128()
110 }
111 fn to_f32(&self) -> Option<f32> {
112 self.re.to_f32()
113 }
114 fn to_f64(&self) -> Option<f64> {
115 self.re.to_f64()
116 }
117}