1#[macro_use]
4extern crate lazy_static;
5#[macro_use]
6extern crate itertools;
7extern crate ordered_float;
8extern crate rand;
9extern crate rayon;
10
11mod decrypt;
12mod constants;
13mod enigma;
14mod fitness;
15mod plugboard;
16mod reflector;
17mod rotor;
18
19pub use decrypt::decrypt;
20pub use enigma::Enigma;
21
22
23trait CharIndex {
24 fn index(&self) -> usize;
25}
26
27impl CharIndex for char {
28 fn index(&self) -> usize {
29 *self as usize - 65
30 }
31}
32
33
34trait ToChar {
35 fn to_char(&self) -> char;
36}
37
38impl ToChar for usize {
39 fn to_char(&self) -> char {
40 ((*self % 26) as u8 + 65) as char
41 }
42}