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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
pub trait Insert {
type Input;
type Output;
fn insert(&mut self, input: Self::Input) -> Self::Output;
}
impl<T> Insert for Option<T> {
type Input = T;
type Output = ();
fn insert(&mut self, input: Self::Input) {
*self = Some(input);
}
}
#[cfg(feature = "alloc")]
impl<T> Insert for alloc::vec::Vec<T> {
type Input = (usize, T);
type Output = ();
fn insert(&mut self, input: Self::Input) {
self.insert(input.0, input.1)
}
}
#[cfg(feature = "with-arrayvec")]
impl<A> Insert for arrayvec::ArrayVec<crate::ArrayWrapper<A>>
where
A: crate::Array,
{
type Input = (usize, A::Item);
type Output = ();
fn insert(&mut self, input: Self::Input) {
self.insert(input.0, input.1)
}
}
#[cfg(feature = "with-smallvec")]
impl<A> Insert for smallvec::SmallVec<crate::ArrayWrapper<A>>
where
A: crate::Array,
{
type Input = (usize, A::Item);
type Output = ();
fn insert(&mut self, input: Self::Input) {
self.insert(input.0, input.1)
}
}
#[cfg(feature = "with-staticvec")]
impl<T, const N: usize> Insert for staticvec::StaticVec<T, N> {
type Input = (usize, T);
type Output = ();
fn insert(&mut self, input: Self::Input) {
self.insert(input.0, input.1)
}
}
#[cfg(feature = "with-tinyvec")]
impl<A> Insert for tinyvec::ArrayVec<crate::ArrayWrapper<A>>
where
A: crate::Array,
A::Item: Default,
{
type Input = (usize, A::Item);
type Output = ();
fn insert(&mut self, input: Self::Input) {
self.insert(input.0, input.1)
}
}
#[cfg(all(feature = "alloc", feature = "with-tinyvec"))]
impl<A> Insert for tinyvec::TinyVec<crate::ArrayWrapper<A>>
where
A: crate::Array,
A::Item: Default,
{
type Input = (usize, A::Item);
type Output = ();
fn insert(&mut self, input: Self::Input) {
self.insert(input.0, input.1)
}
}