Skip to content

Commit 62cb7d8

Browse files
committed
Optimize impl From<i8> for LitBool
1 parent 3cb99d3 commit 62cb7d8

File tree

1 file changed

+260
-5
lines changed

1 file changed

+260
-5
lines changed

src/lib.rs

Lines changed: 260 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,267 @@ pub mod solver {
7474
Undef = 2,
7575
}
7676
impl From<i8> for LitBool {
77+
#[inline]
7778
fn from(x: i8) -> Self {
78-
match x {
79-
0 => LitBool::True,
80-
1 => LitBool::False,
81-
_ => LitBool::Undef,
82-
}
79+
static MAP: [LitBool; 256] = [
80+
LitBool::True,
81+
LitBool::False,
82+
LitBool::Undef,
83+
LitBool::Undef,
84+
LitBool::Undef,
85+
LitBool::Undef,
86+
LitBool::Undef,
87+
LitBool::Undef,
88+
LitBool::Undef,
89+
LitBool::Undef,
90+
LitBool::Undef,
91+
LitBool::Undef,
92+
LitBool::Undef,
93+
LitBool::Undef,
94+
LitBool::Undef,
95+
LitBool::Undef,
96+
LitBool::Undef,
97+
LitBool::Undef,
98+
LitBool::Undef,
99+
LitBool::Undef,
100+
LitBool::Undef,
101+
LitBool::Undef,
102+
LitBool::Undef,
103+
LitBool::Undef,
104+
LitBool::Undef,
105+
LitBool::Undef,
106+
LitBool::Undef,
107+
LitBool::Undef,
108+
LitBool::Undef,
109+
LitBool::Undef,
110+
LitBool::Undef,
111+
LitBool::Undef,
112+
LitBool::Undef,
113+
LitBool::Undef,
114+
LitBool::Undef,
115+
LitBool::Undef,
116+
LitBool::Undef,
117+
LitBool::Undef,
118+
LitBool::Undef,
119+
LitBool::Undef,
120+
LitBool::Undef,
121+
LitBool::Undef,
122+
LitBool::Undef,
123+
LitBool::Undef,
124+
LitBool::Undef,
125+
LitBool::Undef,
126+
LitBool::Undef,
127+
LitBool::Undef,
128+
LitBool::Undef,
129+
LitBool::Undef,
130+
LitBool::Undef,
131+
LitBool::Undef,
132+
LitBool::Undef,
133+
LitBool::Undef,
134+
LitBool::Undef,
135+
LitBool::Undef,
136+
LitBool::Undef,
137+
LitBool::Undef,
138+
LitBool::Undef,
139+
LitBool::Undef,
140+
LitBool::Undef,
141+
LitBool::Undef,
142+
LitBool::Undef,
143+
LitBool::Undef,
144+
LitBool::Undef,
145+
LitBool::Undef,
146+
LitBool::Undef,
147+
LitBool::Undef,
148+
LitBool::Undef,
149+
LitBool::Undef,
150+
LitBool::Undef,
151+
LitBool::Undef,
152+
LitBool::Undef,
153+
LitBool::Undef,
154+
LitBool::Undef,
155+
LitBool::Undef,
156+
LitBool::Undef,
157+
LitBool::Undef,
158+
LitBool::Undef,
159+
LitBool::Undef,
160+
LitBool::Undef,
161+
LitBool::Undef,
162+
LitBool::Undef,
163+
LitBool::Undef,
164+
LitBool::Undef,
165+
LitBool::Undef,
166+
LitBool::Undef,
167+
LitBool::Undef,
168+
LitBool::Undef,
169+
LitBool::Undef,
170+
LitBool::Undef,
171+
LitBool::Undef,
172+
LitBool::Undef,
173+
LitBool::Undef,
174+
LitBool::Undef,
175+
LitBool::Undef,
176+
LitBool::Undef,
177+
LitBool::Undef,
178+
LitBool::Undef,
179+
LitBool::Undef,
180+
LitBool::Undef,
181+
LitBool::Undef,
182+
LitBool::Undef,
183+
LitBool::Undef,
184+
LitBool::Undef,
185+
LitBool::Undef,
186+
LitBool::Undef,
187+
LitBool::Undef,
188+
LitBool::Undef,
189+
LitBool::Undef,
190+
LitBool::Undef,
191+
LitBool::Undef,
192+
LitBool::Undef,
193+
LitBool::Undef,
194+
LitBool::Undef,
195+
LitBool::Undef,
196+
LitBool::Undef,
197+
LitBool::Undef,
198+
LitBool::Undef,
199+
LitBool::Undef,
200+
LitBool::Undef,
201+
LitBool::Undef,
202+
LitBool::Undef,
203+
LitBool::Undef,
204+
LitBool::Undef,
205+
LitBool::Undef,
206+
LitBool::Undef,
207+
LitBool::Undef,
208+
LitBool::Undef,
209+
LitBool::Undef,
210+
LitBool::Undef,
211+
LitBool::Undef,
212+
LitBool::Undef,
213+
LitBool::Undef,
214+
LitBool::Undef,
215+
LitBool::Undef,
216+
LitBool::Undef,
217+
LitBool::Undef,
218+
LitBool::Undef,
219+
LitBool::Undef,
220+
LitBool::Undef,
221+
LitBool::Undef,
222+
LitBool::Undef,
223+
LitBool::Undef,
224+
LitBool::Undef,
225+
LitBool::Undef,
226+
LitBool::Undef,
227+
LitBool::Undef,
228+
LitBool::Undef,
229+
LitBool::Undef,
230+
LitBool::Undef,
231+
LitBool::Undef,
232+
LitBool::Undef,
233+
LitBool::Undef,
234+
LitBool::Undef,
235+
LitBool::Undef,
236+
LitBool::Undef,
237+
LitBool::Undef,
238+
LitBool::Undef,
239+
LitBool::Undef,
240+
LitBool::Undef,
241+
LitBool::Undef,
242+
LitBool::Undef,
243+
LitBool::Undef,
244+
LitBool::Undef,
245+
LitBool::Undef,
246+
LitBool::Undef,
247+
LitBool::Undef,
248+
LitBool::Undef,
249+
LitBool::Undef,
250+
LitBool::Undef,
251+
LitBool::Undef,
252+
LitBool::Undef,
253+
LitBool::Undef,
254+
LitBool::Undef,
255+
LitBool::Undef,
256+
LitBool::Undef,
257+
LitBool::Undef,
258+
LitBool::Undef,
259+
LitBool::Undef,
260+
LitBool::Undef,
261+
LitBool::Undef,
262+
LitBool::Undef,
263+
LitBool::Undef,
264+
LitBool::Undef,
265+
LitBool::Undef,
266+
LitBool::Undef,
267+
LitBool::Undef,
268+
LitBool::Undef,
269+
LitBool::Undef,
270+
LitBool::Undef,
271+
LitBool::Undef,
272+
LitBool::Undef,
273+
LitBool::Undef,
274+
LitBool::Undef,
275+
LitBool::Undef,
276+
LitBool::Undef,
277+
LitBool::Undef,
278+
LitBool::Undef,
279+
LitBool::Undef,
280+
LitBool::Undef,
281+
LitBool::Undef,
282+
LitBool::Undef,
283+
LitBool::Undef,
284+
LitBool::Undef,
285+
LitBool::Undef,
286+
LitBool::Undef,
287+
LitBool::Undef,
288+
LitBool::Undef,
289+
LitBool::Undef,
290+
LitBool::Undef,
291+
LitBool::Undef,
292+
LitBool::Undef,
293+
LitBool::Undef,
294+
LitBool::Undef,
295+
LitBool::Undef,
296+
LitBool::Undef,
297+
LitBool::Undef,
298+
LitBool::Undef,
299+
LitBool::Undef,
300+
LitBool::Undef,
301+
LitBool::Undef,
302+
LitBool::Undef,
303+
LitBool::Undef,
304+
LitBool::Undef,
305+
LitBool::Undef,
306+
LitBool::Undef,
307+
LitBool::Undef,
308+
LitBool::Undef,
309+
LitBool::Undef,
310+
LitBool::Undef,
311+
LitBool::Undef,
312+
LitBool::Undef,
313+
LitBool::Undef,
314+
LitBool::Undef,
315+
LitBool::Undef,
316+
LitBool::Undef,
317+
LitBool::Undef,
318+
LitBool::Undef,
319+
LitBool::Undef,
320+
LitBool::Undef,
321+
LitBool::Undef,
322+
LitBool::Undef,
323+
LitBool::Undef,
324+
LitBool::Undef,
325+
LitBool::Undef,
326+
LitBool::Undef,
327+
LitBool::Undef,
328+
LitBool::Undef,
329+
LitBool::Undef,
330+
LitBool::Undef,
331+
LitBool::Undef,
332+
LitBool::Undef,
333+
LitBool::Undef,
334+
LitBool::Undef,
335+
LitBool::Undef,
336+
];
337+
*unsafe { MAP.get_unchecked(std::mem::transmute::<i8, u8>(x) as usize) }
83338
}
84339
}
85340
impl<T> Index<Var> for Vec<T> {

0 commit comments

Comments
 (0)