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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193

/// Splits a `HashMap` into 3 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable3` values independently.
pub fn split3<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable3<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 4 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable4` values independently.
pub fn split4<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable4<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 5 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable5` values independently.
pub fn split5<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable5<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 6 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable6` values independently.
pub fn split6<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable6<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 7 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable7` values independently.
pub fn split7<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable7<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 8 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable8` values independently.
pub fn split8<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable8<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 9 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable9` values independently.
pub fn split9<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable9<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 10 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable10` values independently.
pub fn split10<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable10<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 11 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable11` values independently.
pub fn split11<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable11<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 12 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable12` values independently.
pub fn split12<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable12<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 13 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable13` values independently.
pub fn split13<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable13<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 14 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable14` values independently.
pub fn split14<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable14<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 15 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable15` values independently.
pub fn split15<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable15<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 16 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable16` values independently.
pub fn split16<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable16<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 17 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable17` values independently.
pub fn split17<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable17<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 18 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable18` values independently.
pub fn split18<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, HashMapR<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable18<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }), HashMapR(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 19 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable19` values independently.
pub fn split19<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, HashMapR<'a, K, V, S, SplitType>, HashMapS<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable19<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }), HashMapR(PhantomData, unsafe { &mut*p }), HashMapS(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 20 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable20` values independently.
pub fn split20<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, HashMapR<'a, K, V, S, SplitType>, HashMapS<'a, K, V, S, SplitType>, HashMapT<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable20<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }), HashMapR(PhantomData, unsafe { &mut*p }), HashMapS(PhantomData, unsafe { &mut*p }), HashMapT(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 21 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable21` values independently.
pub fn split21<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, HashMapR<'a, K, V, S, SplitType>, HashMapS<'a, K, V, S, SplitType>, HashMapT<'a, K, V, S, SplitType>, HashMapU<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable21<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }), HashMapR(PhantomData, unsafe { &mut*p }), HashMapS(PhantomData, unsafe { &mut*p }), HashMapT(PhantomData, unsafe { &mut*p }), HashMapU(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 22 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable22` values independently.
pub fn split22<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, HashMapR<'a, K, V, S, SplitType>, HashMapS<'a, K, V, S, SplitType>, HashMapT<'a, K, V, S, SplitType>, HashMapU<'a, K, V, S, SplitType>, HashMapV<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable22<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }), HashMapR(PhantomData, unsafe { &mut*p }), HashMapS(PhantomData, unsafe { &mut*p }), HashMapT(PhantomData, unsafe { &mut*p }), HashMapU(PhantomData, unsafe { &mut*p }), HashMapV(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 23 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable23` values independently.
pub fn split23<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, HashMapR<'a, K, V, S, SplitType>, HashMapS<'a, K, V, S, SplitType>, HashMapT<'a, K, V, S, SplitType>, HashMapU<'a, K, V, S, SplitType>, HashMapV<'a, K, V, S, SplitType>, HashMapW<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable23<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }), HashMapR(PhantomData, unsafe { &mut*p }), HashMapS(PhantomData, unsafe { &mut*p }), HashMapT(PhantomData, unsafe { &mut*p }), HashMapU(PhantomData, unsafe { &mut*p }), HashMapV(PhantomData, unsafe { &mut*p }), HashMapW(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 24 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable24` values independently.
pub fn split24<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, HashMapR<'a, K, V, S, SplitType>, HashMapS<'a, K, V, S, SplitType>, HashMapT<'a, K, V, S, SplitType>, HashMapU<'a, K, V, S, SplitType>, HashMapV<'a, K, V, S, SplitType>, HashMapW<'a, K, V, S, SplitType>, HashMapX<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable24<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }), HashMapR(PhantomData, unsafe { &mut*p }), HashMapS(PhantomData, unsafe { &mut*p }), HashMapT(PhantomData, unsafe { &mut*p }), HashMapU(PhantomData, unsafe { &mut*p }), HashMapV(PhantomData, unsafe { &mut*p }), HashMapW(PhantomData, unsafe { &mut*p }), HashMapX(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 25 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable25` values independently.
pub fn split25<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, HashMapR<'a, K, V, S, SplitType>, HashMapS<'a, K, V, S, SplitType>, HashMapT<'a, K, V, S, SplitType>, HashMapU<'a, K, V, S, SplitType>, HashMapV<'a, K, V, S, SplitType>, HashMapW<'a, K, V, S, SplitType>, HashMapX<'a, K, V, S, SplitType>, HashMapY<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable25<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }), HashMapR(PhantomData, unsafe { &mut*p }), HashMapS(PhantomData, unsafe { &mut*p }), HashMapT(PhantomData, unsafe { &mut*p }), HashMapU(PhantomData, unsafe { &mut*p }), HashMapV(PhantomData, unsafe { &mut*p }), HashMapW(PhantomData, unsafe { &mut*p }), HashMapX(PhantomData, unsafe { &mut*p }), HashMapY(PhantomData, unsafe { &mut*p }))
}

/// Splits a `HashMap` into 26 disjoint hashmap references, able to access the split parts of the
/// stored `Splittable26` values independently.
pub fn split26<'a, K: 'a, V: 'a, S, SplitType>(v: &'a mut HashMap<K, V, S>) -> (HashMapA<'a, K, V, S, SplitType>, HashMapB<'a, K, V, S, SplitType>, HashMapC<'a, K, V, S, SplitType>, HashMapD<'a, K, V, S, SplitType>, HashMapE<'a, K, V, S, SplitType>, HashMapF<'a, K, V, S, SplitType>, HashMapG<'a, K, V, S, SplitType>, HashMapH<'a, K, V, S, SplitType>, HashMapI<'a, K, V, S, SplitType>, HashMapJ<'a, K, V, S, SplitType>, HashMapK<'a, K, V, S, SplitType>, HashMapL<'a, K, V, S, SplitType>, HashMapM<'a, K, V, S, SplitType>, HashMapN<'a, K, V, S, SplitType>, HashMapO<'a, K, V, S, SplitType>, HashMapP<'a, K, V, S, SplitType>, HashMapQ<'a, K, V, S, SplitType>, HashMapR<'a, K, V, S, SplitType>, HashMapS<'a, K, V, S, SplitType>, HashMapT<'a, K, V, S, SplitType>, HashMapU<'a, K, V, S, SplitType>, HashMapV<'a, K, V, S, SplitType>, HashMapW<'a, K, V, S, SplitType>, HashMapX<'a, K, V, S, SplitType>, HashMapY<'a, K, V, S, SplitType>, HashMapZ<'a, K, V, S, SplitType>, )
where K: Eq + Hash, S: BuildHasher, V: Splittable26<'a, SplitType> {
    let p = v as * mut _;
    (HashMapA(PhantomData, v), HashMapB(PhantomData, unsafe { &mut*p }), HashMapC(PhantomData, unsafe { &mut*p }), HashMapD(PhantomData, unsafe { &mut*p }), HashMapE(PhantomData, unsafe { &mut*p }), HashMapF(PhantomData, unsafe { &mut*p }), HashMapG(PhantomData, unsafe { &mut*p }), HashMapH(PhantomData, unsafe { &mut*p }), HashMapI(PhantomData, unsafe { &mut*p }), HashMapJ(PhantomData, unsafe { &mut*p }), HashMapK(PhantomData, unsafe { &mut*p }), HashMapL(PhantomData, unsafe { &mut*p }), HashMapM(PhantomData, unsafe { &mut*p }), HashMapN(PhantomData, unsafe { &mut*p }), HashMapO(PhantomData, unsafe { &mut*p }), HashMapP(PhantomData, unsafe { &mut*p }), HashMapQ(PhantomData, unsafe { &mut*p }), HashMapR(PhantomData, unsafe { &mut*p }), HashMapS(PhantomData, unsafe { &mut*p }), HashMapT(PhantomData, unsafe { &mut*p }), HashMapU(PhantomData, unsafe { &mut*p }), HashMapV(PhantomData, unsafe { &mut*p }), HashMapW(PhantomData, unsafe { &mut*p }), HashMapX(PhantomData, unsafe { &mut*p }), HashMapY(PhantomData, unsafe { &mut*p }), HashMapZ(PhantomData, unsafe { &mut*p }))
}