enigma-cli 1.0.0

A command-line interface for an Enigma machine simulator. Configurable with any reflector, number of rotors, and plugboard pairs.
Documentation
mod enigma;
mod enigma_int;
mod plugboard;
mod reflector;
mod rotor;

pub use enigma::Enigma;
pub use reflector::Reflector;
pub use rotor::Rotor;

use crate::plugboard::Plugboard;

pub struct EnigmaBuilder {
    pub rotors: Vec<Rotor>,
    pub reflector: Option<Reflector>,
    pub plugboard: Option<Plugboard>,
}

impl EnigmaBuilder {
    pub fn new() -> EnigmaBuilder {
        EnigmaBuilder {
            rotors: Vec::new(),
            reflector: None,
            plugboard: None,
        }
    }
}

impl Default for EnigmaBuilder {
    fn default() -> Self {
        Self::new()
    }
}

impl EnigmaBuilder {
    pub fn build(self) -> Enigma {
        Enigma {
            rotors: self.rotors,
            reflector: self.reflector.expect("Reflector is required"),
            plugboard: self.plugboard,
        }
    }
}