pub fn decrypt(msg: &str) -> (String, Enigma) {
    let mut enigma;

    enigma = guess_rotor_and_first_key::<IoC>(msg);
    enigma = guess_key_and_ring::<Bigram>(msg, enigma);
    enigma = guess_plugboard::<Quadgram>(msg, enigma);

    (enigma.encrypt(msg), enigma)
}
/// Decrypts the given string by iterating through multiple possible Enigma
/// configurations, returning `(plaintext, Enigma)` corresponding to the most
/// probable decryption.
///
/// The decryption algorithm works in three steps:
///
/// 1. Guesses the rotors and first key setting.
/// 2. Guesses the remaining key settings and ring settings.
/// 3. Incrementally adds the best plug until no improvement is made.
///
/// Assumes `msg` contains only uppercase ASCII characters.
Decrypts the given string by iterating through multiple possible Enigma
configurations, returning `(plaintext, Enigma)` corresponding to the most
probable decryption.

The decryption algorithm works in three steps.

1. Guesses the rotors and first key setting.
2. Guesses the remaining key settings and ring settings.
3. Incrementally adds the best plug until no improvement is made.

Assumes `msg` contains only uppercase ASCII characters.
Decrypts the given string by iterating through multiple possible Enigma configurations returning ` ( plaintext Enigma ) ` corresponding to the most probable decryption . The decryption algorithm works in three steps . 1 . Guesses the rotors and first key setting . 2 . Guesses the remaining key settings and ring settings . 3 . Incrementally adds the best plug until no improvement is made . Assumes ` msg ` contains only uppercase ASCII characters .
pub fn decrypt(msg: &str) -> (String, Enigma) {
    let mut enigma;
    enigma = guess_rotor_and_first_key::<IoC>(msg);
    enigma = guess_key_and_ring::<Bigram>(msg, enigma);
    enigma = guess_plugboard::<Quadgram>(msg, enigma);
    (enigma.encrypt(msg), enigma)
}
pub fn decrypt ( msg : & str ) -> ( String , Enigma ) { let mut enigma ; enigma = guess_rotor_and_first_key :: < IoC > ( msg ) ; enigma = guess_key_and_ring :: < Bigram > ( msg , enigma ) ; enigma = guess_plugboard :: < Quadgram > ( msg , enigma ) ; ( enigma . encrypt ( msg ) , enigma ) }
Decrypts the given string by iterating through multiple possible Enigma
configurations, returning `(plaintext, Enigma)` corresponding to the most
probable decryption.
Decrypts the given string by iterating through multiple possible Enigma configurations returning ` ( plaintext Enigma ) ` corresponding to the most probable decryption .
msg
&str
msg
&str