1use super::*;
2
3pub trait NumberToChinese {
5 fn to_chinese(
19 self,
20 chinese_variant: ChineseVariant,
21 chinese_case: ChineseCase,
22 method: ChineseCountMethod,
23 ) -> Result<String, NumberToChineseError>;
24
25 fn to_chinese_naive(self, chinese_variant: ChineseVariant, chinese_case: ChineseCase)
41 -> String;
42}
43
44impl NumberToChinese for u8 {
45 #[inline]
46 fn to_chinese(
47 self,
48 chinese_variant: ChineseVariant,
49 chinese_case: ChineseCase,
50 method: ChineseCountMethod,
51 ) -> Result<String, NumberToChineseError> {
52 (self as u128).to_chinese(chinese_variant, chinese_case, method)
53 }
54
55 #[inline]
56 fn to_chinese_naive(
57 self,
58 chinese_variant: ChineseVariant,
59 chinese_case: ChineseCase,
60 ) -> String {
61 from_u8_to_chinese_naive(chinese_variant, chinese_case, self)
62 }
63}
64
65impl NumberToChinese for i8 {
66 #[inline]
67 fn to_chinese(
68 self,
69 chinese_variant: ChineseVariant,
70 chinese_case: ChineseCase,
71 method: ChineseCountMethod,
72 ) -> Result<String, NumberToChineseError> {
73 (self as i128).to_chinese(chinese_variant, chinese_case, method)
74 }
75
76 #[inline]
77 fn to_chinese_naive(
78 self,
79 chinese_variant: ChineseVariant,
80 chinese_case: ChineseCase,
81 ) -> String {
82 from_i8_to_chinese_naive(chinese_variant, chinese_case, self)
83 }
84}
85
86impl NumberToChinese for u16 {
87 #[inline]
88 fn to_chinese(
89 self,
90 chinese_variant: ChineseVariant,
91 chinese_case: ChineseCase,
92 method: ChineseCountMethod,
93 ) -> Result<String, NumberToChineseError> {
94 (self as u128).to_chinese(chinese_variant, chinese_case, method)
95 }
96
97 #[inline]
98 fn to_chinese_naive(
99 self,
100 chinese_variant: ChineseVariant,
101 chinese_case: ChineseCase,
102 ) -> String {
103 from_u16_to_chinese_naive(chinese_variant, chinese_case, self)
104 }
105}
106
107impl NumberToChinese for i16 {
108 #[inline]
109 fn to_chinese(
110 self,
111 chinese_variant: ChineseVariant,
112 chinese_case: ChineseCase,
113 method: ChineseCountMethod,
114 ) -> Result<String, NumberToChineseError> {
115 (self as i128).to_chinese(chinese_variant, chinese_case, method)
116 }
117
118 #[inline]
119 fn to_chinese_naive(
120 self,
121 chinese_variant: ChineseVariant,
122 chinese_case: ChineseCase,
123 ) -> String {
124 from_i16_to_chinese_naive(chinese_variant, chinese_case, self)
125 }
126}
127
128impl NumberToChinese for u32 {
129 #[inline]
130 fn to_chinese(
131 self,
132 chinese_variant: ChineseVariant,
133 chinese_case: ChineseCase,
134 method: ChineseCountMethod,
135 ) -> Result<String, NumberToChineseError> {
136 (self as u128).to_chinese(chinese_variant, chinese_case, method)
137 }
138
139 #[inline]
140 fn to_chinese_naive(
141 self,
142 chinese_variant: ChineseVariant,
143 chinese_case: ChineseCase,
144 ) -> String {
145 from_u32_to_chinese_naive(chinese_variant, chinese_case, self)
146 }
147}
148
149impl NumberToChinese for i32 {
150 #[inline]
151 fn to_chinese(
152 self,
153 chinese_variant: ChineseVariant,
154 chinese_case: ChineseCase,
155 method: ChineseCountMethod,
156 ) -> Result<String, NumberToChineseError> {
157 (self as i128).to_chinese(chinese_variant, chinese_case, method)
158 }
159
160 #[inline]
161 fn to_chinese_naive(
162 self,
163 chinese_variant: ChineseVariant,
164 chinese_case: ChineseCase,
165 ) -> String {
166 from_i32_to_chinese_naive(chinese_variant, chinese_case, self)
167 }
168}
169
170impl NumberToChinese for u64 {
171 #[inline]
172 fn to_chinese(
173 self,
174 chinese_variant: ChineseVariant,
175 chinese_case: ChineseCase,
176 method: ChineseCountMethod,
177 ) -> Result<String, NumberToChineseError> {
178 (self as u128).to_chinese(chinese_variant, chinese_case, method)
179 }
180
181 #[inline]
182 fn to_chinese_naive(
183 self,
184 chinese_variant: ChineseVariant,
185 chinese_case: ChineseCase,
186 ) -> String {
187 from_u64_to_chinese_naive(chinese_variant, chinese_case, self)
188 }
189}
190
191impl NumberToChinese for i64 {
192 #[inline]
193 fn to_chinese(
194 self,
195 chinese_variant: ChineseVariant,
196 chinese_case: ChineseCase,
197 method: ChineseCountMethod,
198 ) -> Result<String, NumberToChineseError> {
199 (self as i128).to_chinese(chinese_variant, chinese_case, method)
200 }
201
202 #[inline]
203 fn to_chinese_naive(
204 self,
205 chinese_variant: ChineseVariant,
206 chinese_case: ChineseCase,
207 ) -> String {
208 from_i64_to_chinese_naive(chinese_variant, chinese_case, self)
209 }
210}
211
212impl NumberToChinese for u128 {
213 #[inline]
214 fn to_chinese(
215 self,
216 chinese_variant: ChineseVariant,
217 chinese_case: ChineseCase,
218 method: ChineseCountMethod,
219 ) -> Result<String, NumberToChineseError> {
220 match method {
221 ChineseCountMethod::Low => {
222 from_u128_to_chinese_low(chinese_variant, chinese_case, self)
223 },
224 ChineseCountMethod::TenThousand => {
225 Ok(from_u128_to_chinese_ten_thousand(chinese_variant, chinese_case, self))
226 },
227 ChineseCountMethod::Middle => {
228 Ok(from_u128_to_chinese_middle(chinese_variant, chinese_case, self))
229 },
230 ChineseCountMethod::High => {
231 Ok(from_u128_to_chinese_high(chinese_variant, chinese_case, self))
232 },
233 }
234 }
235
236 #[inline]
237 fn to_chinese_naive(
238 self,
239 chinese_variant: ChineseVariant,
240 chinese_case: ChineseCase,
241 ) -> String {
242 from_u128_to_chinese_naive(chinese_variant, chinese_case, self)
243 }
244}
245
246impl NumberToChinese for i128 {
247 #[inline]
248 fn to_chinese(
249 self,
250 chinese_variant: ChineseVariant,
251 chinese_case: ChineseCase,
252 method: ChineseCountMethod,
253 ) -> Result<String, NumberToChineseError> {
254 match method {
255 ChineseCountMethod::Low => {
256 from_i128_to_chinese_low(chinese_variant, chinese_case, self)
257 },
258 ChineseCountMethod::TenThousand => {
259 Ok(from_i128_to_chinese_ten_thousand(chinese_variant, chinese_case, self))
260 },
261 ChineseCountMethod::Middle => {
262 Ok(from_i128_to_chinese_middle(chinese_variant, chinese_case, self))
263 },
264 ChineseCountMethod::High => {
265 Ok(from_i128_to_chinese_high(chinese_variant, chinese_case, self))
266 },
267 }
268 }
269
270 #[inline]
271 fn to_chinese_naive(
272 self,
273 chinese_variant: ChineseVariant,
274 chinese_case: ChineseCase,
275 ) -> String {
276 from_i128_to_chinese_naive(chinese_variant, chinese_case, self)
277 }
278}
279
280impl NumberToChinese for f32 {
281 #[inline]
282 fn to_chinese(
283 self,
284 chinese_variant: ChineseVariant,
285 chinese_case: ChineseCase,
286 method: ChineseCountMethod,
287 ) -> Result<String, NumberToChineseError> {
288 (self as f64).to_chinese(chinese_variant, chinese_case, method)
289 }
290
291 #[inline]
292 fn to_chinese_naive(
293 self,
294 chinese_variant: ChineseVariant,
295 chinese_case: ChineseCase,
296 ) -> String {
297 from_f32_to_chinese_naive(chinese_variant, chinese_case, self)
298 }
299}
300
301impl NumberToChinese for f64 {
302 #[inline]
303 fn to_chinese(
304 self,
305 chinese_variant: ChineseVariant,
306 chinese_case: ChineseCase,
307 method: ChineseCountMethod,
308 ) -> Result<String, NumberToChineseError> {
309 match method {
310 ChineseCountMethod::Low => from_f64_to_chinese_low(chinese_variant, chinese_case, self),
311 ChineseCountMethod::TenThousand => {
312 from_f64_to_chinese_ten_thousand(chinese_variant, chinese_case, self)
313 },
314 ChineseCountMethod::Middle => {
315 from_f64_to_chinese_middle(chinese_variant, chinese_case, self)
316 },
317 ChineseCountMethod::High => {
318 Ok(from_f64_to_chinese_high(chinese_variant, chinese_case, self))
319 },
320 }
321 }
322
323 #[inline]
324 fn to_chinese_naive(
325 self,
326 chinese_variant: ChineseVariant,
327 chinese_case: ChineseCase,
328 ) -> String {
329 from_f64_to_chinese_naive(chinese_variant, chinese_case, self)
330 }
331}