/// Trait for common cipher operations
pubtraitCipherPuzzle{/// Encrypt the given plaintext
fnencrypt(&self, plaintext:&str)-> String;/// Decrypt the given ciphertext
fndecrypt(&self, ciphertext:&str)-> String;/// Check whether a guess correctly decrypts the ciphertext
fnvalidate_solution(&self, ciphertext:&str, guess:&str)->bool{self.decrypt(ciphertext).eq_ignore_ascii_case(guess)}}