1use crate::de::PlatformVersionedDecode;
2use crate::{impl_platform_versioned_borrow_decode, PlatformVersionedBorrowDecode};
3use bincode::de::read::Reader;
4use bincode::de::{BorrowDecoder, Decoder};
5use bincode::error::DecodeError;
6use bincode::Decode;
7use core::{
8 any::TypeId,
9 cell::{Cell, RefCell},
10 num::{
11 NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroIsize, NonZeroU128,
12 NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8, NonZeroUsize,
13 },
14 ops::{Bound, Range, RangeInclusive},
15 time::Duration,
16};
17use platform_version::version::PlatformVersion;
18
19impl PlatformVersionedDecode for bool {
20 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
21 decoder: &mut D,
22 _: &PlatformVersion,
23 ) -> Result<Self, DecodeError> {
24 bincode::Decode::decode(decoder)
25 }
26}
27impl_platform_versioned_borrow_decode!(bool);
28
29impl PlatformVersionedDecode for u8 {
30 #[inline]
31 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
32 decoder: &mut D,
33 _: &PlatformVersion,
34 ) -> Result<Self, DecodeError> {
35 bincode::Decode::decode(decoder)
36 }
37}
38impl_platform_versioned_borrow_decode!(u8);
39
40impl PlatformVersionedDecode for NonZeroU8 {
41 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
42 decoder: &mut D,
43 _: &PlatformVersion,
44 ) -> Result<Self, DecodeError> {
45 bincode::Decode::decode(decoder)
46 }
47}
48impl_platform_versioned_borrow_decode!(NonZeroU8);
49
50impl PlatformVersionedDecode for u16 {
51 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
52 decoder: &mut D,
53 _: &PlatformVersion,
54 ) -> Result<Self, DecodeError> {
55 bincode::Decode::decode(decoder)
56 }
57}
58impl_platform_versioned_borrow_decode!(u16);
59
60impl PlatformVersionedDecode for NonZeroU16 {
61 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
62 decoder: &mut D,
63 _: &PlatformVersion,
64 ) -> Result<Self, DecodeError> {
65 bincode::Decode::decode(decoder)
66 }
67}
68impl_platform_versioned_borrow_decode!(NonZeroU16);
69
70impl PlatformVersionedDecode for u32 {
71 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
72 decoder: &mut D,
73 _: &PlatformVersion,
74 ) -> Result<Self, DecodeError> {
75 bincode::Decode::decode(decoder)
76 }
77}
78impl_platform_versioned_borrow_decode!(u32);
79
80impl PlatformVersionedDecode for NonZeroU32 {
81 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
82 decoder: &mut D,
83 _: &PlatformVersion,
84 ) -> Result<Self, DecodeError> {
85 bincode::Decode::decode(decoder)
86 }
87}
88impl_platform_versioned_borrow_decode!(NonZeroU32);
89
90impl PlatformVersionedDecode for u64 {
91 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
92 decoder: &mut D,
93 _: &PlatformVersion,
94 ) -> Result<Self, DecodeError> {
95 bincode::Decode::decode(decoder)
96 }
97}
98impl_platform_versioned_borrow_decode!(u64);
99
100impl PlatformVersionedDecode for NonZeroU64 {
101 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
102 decoder: &mut D,
103 _: &PlatformVersion,
104 ) -> Result<Self, DecodeError> {
105 bincode::Decode::decode(decoder)
106 }
107}
108impl_platform_versioned_borrow_decode!(NonZeroU64);
109
110impl PlatformVersionedDecode for u128 {
111 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
112 decoder: &mut D,
113 _: &PlatformVersion,
114 ) -> Result<Self, DecodeError> {
115 bincode::Decode::decode(decoder)
116 }
117}
118impl_platform_versioned_borrow_decode!(u128);
119
120impl PlatformVersionedDecode for NonZeroU128 {
121 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
122 decoder: &mut D,
123 _: &PlatformVersion,
124 ) -> Result<Self, DecodeError> {
125 bincode::Decode::decode(decoder)
126 }
127}
128impl_platform_versioned_borrow_decode!(NonZeroU128);
129
130impl PlatformVersionedDecode for usize {
131 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
132 decoder: &mut D,
133 _: &PlatformVersion,
134 ) -> Result<Self, DecodeError> {
135 bincode::Decode::decode(decoder)
136 }
137}
138impl_platform_versioned_borrow_decode!(usize);
139
140impl PlatformVersionedDecode for NonZeroUsize {
141 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
142 decoder: &mut D,
143 _: &PlatformVersion,
144 ) -> Result<Self, DecodeError> {
145 bincode::Decode::decode(decoder)
146 }
147}
148impl_platform_versioned_borrow_decode!(NonZeroUsize);
149
150impl PlatformVersionedDecode for i8 {
151 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
152 decoder: &mut D,
153 _: &PlatformVersion,
154 ) -> Result<Self, DecodeError> {
155 bincode::Decode::decode(decoder)
156 }
157}
158impl_platform_versioned_borrow_decode!(i8);
159
160impl PlatformVersionedDecode for NonZeroI8 {
161 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
162 decoder: &mut D,
163 _: &PlatformVersion,
164 ) -> Result<Self, DecodeError> {
165 bincode::Decode::decode(decoder)
166 }
167}
168impl_platform_versioned_borrow_decode!(NonZeroI8);
169
170impl PlatformVersionedDecode for i16 {
171 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
172 decoder: &mut D,
173 _: &PlatformVersion,
174 ) -> Result<Self, DecodeError> {
175 bincode::Decode::decode(decoder)
176 }
177}
178impl_platform_versioned_borrow_decode!(i16);
179
180impl PlatformVersionedDecode for NonZeroI16 {
181 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
182 decoder: &mut D,
183 _: &PlatformVersion,
184 ) -> Result<Self, DecodeError> {
185 bincode::Decode::decode(decoder)
186 }
187}
188impl_platform_versioned_borrow_decode!(NonZeroI16);
189
190impl PlatformVersionedDecode for i32 {
191 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
192 decoder: &mut D,
193 _: &PlatformVersion,
194 ) -> Result<Self, DecodeError> {
195 bincode::Decode::decode(decoder)
196 }
197}
198impl_platform_versioned_borrow_decode!(i32);
199
200impl PlatformVersionedDecode for NonZeroI32 {
201 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
202 decoder: &mut D,
203 _: &PlatformVersion,
204 ) -> Result<Self, DecodeError> {
205 bincode::Decode::decode(decoder)
206 }
207}
208impl_platform_versioned_borrow_decode!(NonZeroI32);
209
210impl PlatformVersionedDecode for i64 {
211 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
212 decoder: &mut D,
213 _: &PlatformVersion,
214 ) -> Result<Self, DecodeError> {
215 bincode::Decode::decode(decoder)
216 }
217}
218impl_platform_versioned_borrow_decode!(i64);
219
220impl PlatformVersionedDecode for NonZeroI64 {
221 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
222 decoder: &mut D,
223 _: &PlatformVersion,
224 ) -> Result<Self, DecodeError> {
225 bincode::Decode::decode(decoder)
226 }
227}
228impl_platform_versioned_borrow_decode!(NonZeroI64);
229
230impl PlatformVersionedDecode for i128 {
231 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
232 decoder: &mut D,
233 _: &PlatformVersion,
234 ) -> Result<Self, DecodeError> {
235 bincode::Decode::decode(decoder)
236 }
237}
238impl_platform_versioned_borrow_decode!(i128);
239
240impl PlatformVersionedDecode for NonZeroI128 {
241 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
242 decoder: &mut D,
243 _: &PlatformVersion,
244 ) -> Result<Self, DecodeError> {
245 bincode::Decode::decode(decoder)
246 }
247}
248impl_platform_versioned_borrow_decode!(NonZeroI128);
249
250impl PlatformVersionedDecode for isize {
251 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
252 decoder: &mut D,
253 _: &PlatformVersion,
254 ) -> Result<Self, DecodeError> {
255 bincode::Decode::decode(decoder)
256 }
257}
258impl_platform_versioned_borrow_decode!(isize);
259
260impl PlatformVersionedDecode for NonZeroIsize {
261 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
262 decoder: &mut D,
263 _: &PlatformVersion,
264 ) -> Result<Self, DecodeError> {
265 bincode::Decode::decode(decoder)
266 }
267}
268impl_platform_versioned_borrow_decode!(NonZeroIsize);
269
270impl PlatformVersionedDecode for f32 {
271 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
272 decoder: &mut D,
273 _: &PlatformVersion,
274 ) -> Result<Self, DecodeError> {
275 bincode::Decode::decode(decoder)
276 }
277}
278impl_platform_versioned_borrow_decode!(f32);
279
280impl PlatformVersionedDecode for f64 {
281 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
282 decoder: &mut D,
283 _: &PlatformVersion,
284 ) -> Result<Self, DecodeError> {
285 bincode::Decode::decode(decoder)
286 }
287}
288impl_platform_versioned_borrow_decode!(f64);
289
290impl PlatformVersionedDecode for char {
291 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
292 decoder: &mut D,
293 _: &PlatformVersion,
294 ) -> Result<Self, DecodeError> {
295 bincode::Decode::decode(decoder)
296 }
297}
298impl_platform_versioned_borrow_decode!(char);
299
300impl<'a, 'de: 'a> PlatformVersionedBorrowDecode<'de> for &'a [u8] {
301 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
302 decoder: &mut D,
303 _: &PlatformVersion,
304 ) -> Result<Self, DecodeError> {
305 bincode::BorrowDecode::borrow_decode(decoder)
306 }
307}
308
309impl<'a, 'de: 'a> PlatformVersionedBorrowDecode<'de> for &'a str {
310 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
311 decoder: &mut D,
312 _: &PlatformVersion,
313 ) -> Result<Self, DecodeError> {
314 bincode::BorrowDecode::borrow_decode(decoder)
315 }
316}
317
318impl<T, const N: usize> PlatformVersionedDecode for [T; N]
319where
320 T: PlatformVersionedDecode + Sized + 'static,
321{
322 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
323 decoder: &mut D,
324 platform_version: &PlatformVersion,
325 ) -> Result<Self, DecodeError> {
326 decoder.claim_bytes_read(core::mem::size_of::<[T; N]>())?;
327
328 if TypeId::of::<u8>() == TypeId::of::<T>() {
330 let mut buf = [0u8; N];
331 decoder.reader().read(&mut buf)?;
332 let ptr = &mut buf as *mut _ as *mut [T; N];
333
334 let res = unsafe { ptr.read() };
337 Ok(res)
338 } else {
339 let result = super::impl_core::collect_into_array(&mut (0..N).map(|_| {
340 decoder.unclaim_bytes_read(core::mem::size_of::<T>());
342 T::platform_versioned_decode(decoder, platform_version)
343 }));
344
345 result.unwrap()
348 }
349 }
350}
351
352impl<'de, T, const N: usize> PlatformVersionedBorrowDecode<'de> for [T; N]
353where
354 T: PlatformVersionedBorrowDecode<'de> + Sized + 'static,
355{
356 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
357 decoder: &mut D,
358 platform_version: &PlatformVersion,
359 ) -> Result<Self, DecodeError> {
360 decoder.claim_bytes_read(core::mem::size_of::<[T; N]>())?;
361
362 if TypeId::of::<u8>() == TypeId::of::<T>() {
364 let mut buf = [0u8; N];
365 decoder.reader().read(&mut buf)?;
366 let ptr = &mut buf as *mut _ as *mut [T; N];
367
368 let res = unsafe { ptr.read() };
371 Ok(res)
372 } else {
373 let result = super::impl_core::collect_into_array(&mut (0..N).map(|_| {
374 decoder.unclaim_bytes_read(core::mem::size_of::<T>());
376 T::platform_versioned_borrow_decode(decoder, platform_version)
377 }));
378
379 result.unwrap()
382 }
383 }
384}
385
386impl PlatformVersionedDecode for () {
387 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
388 _: &mut D,
389 _platform_version: &PlatformVersion,
390 ) -> Result<Self, DecodeError> {
391 Ok(())
392 }
393}
394impl_platform_versioned_borrow_decode!(());
395
396impl<T> PlatformVersionedDecode for core::marker::PhantomData<T> {
397 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
398 _: &mut D,
399 _platform_version: &PlatformVersion,
400 ) -> Result<Self, DecodeError> {
401 Ok(core::marker::PhantomData)
402 }
403}
404impl<'de, T> PlatformVersionedBorrowDecode<'de> for core::marker::PhantomData<T> {
405 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
406 _: &mut D,
407 _platform_version: &PlatformVersion,
408 ) -> Result<Self, DecodeError> {
409 Ok(core::marker::PhantomData)
410 }
411}
412
413impl<T> PlatformVersionedDecode for Option<T>
414where
415 T: PlatformVersionedDecode,
416{
417 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
418 decoder: &mut D,
419 platform_version: &PlatformVersion,
420 ) -> Result<Self, DecodeError> {
421 match super::decode_option_variant(decoder, core::any::type_name::<Option<T>>())? {
422 Some(_) => {
423 let val = T::platform_versioned_decode(decoder, platform_version)?;
424 Ok(Some(val))
425 }
426 None => Ok(None),
427 }
428 }
429}
430
431impl<'de, T> PlatformVersionedBorrowDecode<'de> for Option<T>
432where
433 T: PlatformVersionedBorrowDecode<'de>,
434{
435 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
436 decoder: &mut D,
437 platform_version: &PlatformVersion,
438 ) -> Result<Self, DecodeError> {
439 match super::decode_option_variant(decoder, core::any::type_name::<Option<T>>())? {
440 Some(_) => {
441 let val = T::platform_versioned_borrow_decode(decoder, platform_version)?;
442 Ok(Some(val))
443 }
444 None => Ok(None),
445 }
446 }
447}
448
449impl<T, U> PlatformVersionedDecode for Result<T, U>
466where
467 T: PlatformVersionedDecode,
468 U: PlatformVersionedDecode,
469{
470 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
471 decoder: &mut D,
472 platform_version: &PlatformVersion,
473 ) -> Result<Self, DecodeError> {
474 let is_ok = u32::decode(decoder)?;
475 match is_ok {
476 0 => {
477 let t = T::platform_versioned_decode(decoder, platform_version)?;
478 Ok(Ok(t))
479 }
480 1 => {
481 let u = U::platform_versioned_decode(decoder, platform_version)?;
482 Ok(Err(u))
483 }
484 x => Err(DecodeError::UnexpectedVariant {
485 found: x,
486 allowed: &bincode::error::AllowedEnumVariants::Range { max: 1, min: 0 },
487 type_name: core::any::type_name::<Result<T, U>>(),
488 }),
489 }
490 }
491}
492
493impl<'de, T, U> PlatformVersionedBorrowDecode<'de> for Result<T, U>
494where
495 T: PlatformVersionedBorrowDecode<'de>,
496 U: PlatformVersionedBorrowDecode<'de>,
497{
498 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
499 decoder: &mut D,
500 platform_version: &PlatformVersion,
501 ) -> Result<Self, DecodeError> {
502 let is_ok = u32::decode(decoder)?;
503 match is_ok {
504 0 => {
505 let t = T::platform_versioned_borrow_decode(decoder, platform_version)?;
506 Ok(Ok(t))
507 }
508 1 => {
509 let u = U::platform_versioned_borrow_decode(decoder, platform_version)?;
510 Ok(Err(u))
511 }
512 x => Err(DecodeError::UnexpectedVariant {
513 found: x,
514 allowed: &bincode::error::AllowedEnumVariants::Range { max: 1, min: 0 },
515 type_name: core::any::type_name::<Result<T, U>>(),
516 }),
517 }
518 }
519}
520
521impl<T> PlatformVersionedDecode for Cell<T>
522where
523 T: PlatformVersionedDecode,
524{
525 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
526 decoder: &mut D,
527 platform_version: &PlatformVersion,
528 ) -> Result<Self, DecodeError> {
529 let t = T::platform_versioned_decode(decoder, platform_version)?;
530 Ok(Cell::new(t))
531 }
532}
533
534impl<'de, T> PlatformVersionedBorrowDecode<'de> for Cell<T>
535where
536 T: PlatformVersionedBorrowDecode<'de>,
537{
538 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
539 decoder: &mut D,
540 platform_version: &PlatformVersion,
541 ) -> Result<Self, DecodeError> {
542 let t = T::platform_versioned_borrow_decode(decoder, platform_version)?;
543 Ok(Cell::new(t))
544 }
545}
546
547impl<T> PlatformVersionedDecode for RefCell<T>
548where
549 T: PlatformVersionedDecode,
550{
551 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
552 decoder: &mut D,
553 platform_version: &PlatformVersion,
554 ) -> Result<Self, DecodeError> {
555 let t = T::platform_versioned_decode(decoder, platform_version)?;
556 Ok(RefCell::new(t))
557 }
558}
559
560impl<'de, T> PlatformVersionedBorrowDecode<'de> for RefCell<T>
561where
562 T: PlatformVersionedBorrowDecode<'de>,
563{
564 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
565 decoder: &mut D,
566 platform_version: &PlatformVersion,
567 ) -> Result<Self, DecodeError> {
568 let t = T::platform_versioned_borrow_decode(decoder, platform_version)?;
569 Ok(RefCell::new(t))
570 }
571}
572
573impl PlatformVersionedDecode for Duration {
574 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
575 decoder: &mut D,
576 _: &PlatformVersion,
577 ) -> Result<Self, DecodeError> {
578 bincode::Decode::decode(decoder)
579 }
580}
581impl_platform_versioned_borrow_decode!(Duration);
582
583impl<T> PlatformVersionedDecode for Range<T>
584where
585 T: PlatformVersionedDecode,
586{
587 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
588 decoder: &mut D,
589 platform_version: &PlatformVersion,
590 ) -> Result<Self, DecodeError> {
591 let min = T::platform_versioned_decode(decoder, platform_version)?;
592 let max = T::platform_versioned_decode(decoder, platform_version)?;
593 Ok(min..max)
594 }
595}
596impl<'de, T> PlatformVersionedBorrowDecode<'de> for Range<T>
597where
598 T: PlatformVersionedBorrowDecode<'de>,
599{
600 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
601 decoder: &mut D,
602 platform_version: &PlatformVersion,
603 ) -> Result<Self, DecodeError> {
604 let min = T::platform_versioned_borrow_decode(decoder, platform_version)?;
605 let max = T::platform_versioned_borrow_decode(decoder, platform_version)?;
606 Ok(min..max)
607 }
608}
609
610impl<T> PlatformVersionedDecode for RangeInclusive<T>
611where
612 T: PlatformVersionedDecode,
613{
614 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
615 decoder: &mut D,
616 platform_version: &PlatformVersion,
617 ) -> Result<Self, DecodeError> {
618 let min = T::platform_versioned_decode(decoder, platform_version)?;
619 let max = T::platform_versioned_decode(decoder, platform_version)?;
620 Ok(RangeInclusive::new(min, max))
621 }
622}
623
624impl<'de, T> PlatformVersionedBorrowDecode<'de> for RangeInclusive<T>
625where
626 T: PlatformVersionedBorrowDecode<'de>,
627{
628 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
629 decoder: &mut D,
630 platform_version: &PlatformVersion,
631 ) -> Result<Self, DecodeError> {
632 let min = T::platform_versioned_borrow_decode(decoder, platform_version)?;
633 let max = T::platform_versioned_borrow_decode(decoder, platform_version)?;
634 Ok(RangeInclusive::new(min, max))
635 }
636}
637
638impl<T> PlatformVersionedDecode for Bound<T>
639where
640 T: PlatformVersionedDecode,
641{
642 fn platform_versioned_decode<D: Decoder<Context = crate::BincodeContext>>(
643 decoder: &mut D,
644 platform_version: &PlatformVersion,
645 ) -> Result<Self, DecodeError> {
646 match u32::decode(decoder)? {
647 0 => Ok(Bound::Unbounded),
648 1 => Ok(Bound::Included(T::platform_versioned_decode(
649 decoder,
650 platform_version,
651 )?)),
652 2 => Ok(Bound::Excluded(T::platform_versioned_decode(
653 decoder,
654 platform_version,
655 )?)),
656 x => Err(DecodeError::UnexpectedVariant {
657 allowed: &bincode::error::AllowedEnumVariants::Range { max: 2, min: 0 },
658 found: x,
659 type_name: core::any::type_name::<Bound<T>>(),
660 }),
661 }
662 }
663}
664
665impl<'de, T> PlatformVersionedBorrowDecode<'de> for Bound<T>
666where
667 T: PlatformVersionedBorrowDecode<'de>,
668{
669 fn platform_versioned_borrow_decode<D: BorrowDecoder<'de, Context = crate::BincodeContext>>(
670 decoder: &mut D,
671 platform_version: &PlatformVersion,
672 ) -> Result<Self, DecodeError> {
673 match u32::decode(decoder)? {
674 0 => Ok(Bound::Unbounded),
675 1 => Ok(Bound::Included(T::platform_versioned_borrow_decode(
676 decoder,
677 platform_version,
678 )?)),
679 2 => Ok(Bound::Excluded(T::platform_versioned_borrow_decode(
680 decoder,
681 platform_version,
682 )?)),
683 x => Err(DecodeError::UnexpectedVariant {
684 allowed: &bincode::error::AllowedEnumVariants::Range { max: 2, min: 0 },
685 found: x,
686 type_name: core::any::type_name::<Bound<T>>(),
687 }),
688 }
689 }
690}
691
692#[allow(dead_code)]
693#[deprecated(note = "This function is marked as unused.")]
694#[allow(deprecated)]
695const UTF8_CHAR_WIDTH: [u8; 256] = [
696 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
697 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
699 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
701 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
703 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
707 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
709 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ];
713
714#[allow(dead_code)]
716#[deprecated(note = "This function is marked as unused.")]
717#[allow(deprecated)]
718const fn utf8_char_width(b: u8) -> usize {
719 UTF8_CHAR_WIDTH[b as usize] as usize
720}