1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#![cfg_attr(not(feature = "std"), no_std)]
use core::cell::Cell;
use core::cell::Ref;
use core::cell::UnsafeCell;
use core::any::TypeId;
use core::array::TryFromSliceError;
use core::ascii;
use core::cmp::Ordering;
use core::str::Utf8Error;
use core::fmt::Formatter;
use core::time::Duration;
#[cfg(feature = "std")]
mod std;
pub trait Canonicalize: Sized
{
fn canon(self) -> Self
{
self
}
}
impl Canonicalize for () {}
impl Canonicalize for u8 {}
impl Canonicalize for i8 {}
impl Canonicalize for u16 {}
impl Canonicalize for i16 {}
impl Canonicalize for u32 {}
impl Canonicalize for i32 {}
impl Canonicalize for u64 {}
impl Canonicalize for i64 {}
impl Canonicalize for f32 {}
impl Canonicalize for f64 {}
impl Canonicalize for usize {}
impl Canonicalize for isize {}
impl Canonicalize for bool {}
impl Canonicalize for char {}
impl<T> Canonicalize for Cell<T> {}
impl<T> Canonicalize for Ref<'_, T> {}
impl<T> Canonicalize for UnsafeCell<T> {}
impl Canonicalize for TypeId {}
impl Canonicalize for TryFromSliceError {}
impl Canonicalize for ascii::EscapeDefault {}
impl Canonicalize for Ordering {}
impl Canonicalize for Utf8Error {}
impl Canonicalize for Formatter<'_> {}
impl Canonicalize for core::fmt::Error {}
impl Canonicalize for Duration {}
impl<T: Canonicalize> Canonicalize for Option<T>
{
fn canon(self) -> Self
{
match self
{
Some(x) => Some(x.canon()),
None => None,
}
}
}
impl<T: Canonicalize, E: Canonicalize> Canonicalize for Result<T, E>
{
fn canon(self) -> Self
{
match self
{
Ok(x) => Ok(x.canon()),
Err(e) => Err(e.canon()),
}
}
}