message: Test deserialization of proofs in MiMC test example.
diff: @@ -28,6 +28,7 @@ use bellman::{
  // We're going to use the Groth16 proving system.
  use bellman::groth16::{
  + Proof,
  generate_random_parameters,
  prepare_verifying_key,
  create_random_proof,
  @@ -165,7 +166,8 @@ impl<'a, E: Engine> Circuit<E> for MiMCDemo<'a, E> {
  }
  }
  -fn main() {
  +#[test]
  +fn test_mimc() {
  // This may not be cryptographically safe, use
  // `OsRng` (for example) in production software.
  let rng = &mut thread_rng();
  @@ -196,14 +198,20 @@ fn main() {
  let mut total_proving = Duration::new(0, 0);
  let mut total_verifying = Duration::new(0, 0);
  + // Just a place to put the proof data, so we can
  + // benchmark deserialization.
  + let mut proof_vec = vec![];
  +
  for _ in 0..SAMPLES {
  // Generate a random preimage and compute the image
  let xl = rng.gen();
  let xr = rng.gen();
  let image = mimc::<Bls12>(xl, xr, &constants);
  + proof_vec.truncate(0);
  +
  let start = Instant::now();
  - let proof = {
  + {
  // Create an instance of our circuit (with the
  // witness)
  let c = MiMCDemo {
  @@ -213,11 +221,15 @@ fn main() {
  };
  // Create a groth16 proof with our parameters.
  - create_random_proof(c, &params, rng).unwrap()
  - };
  + let proof = create_random_proof(c, &params, rng).unwrap();
  +
  + proof.write(&mut proof_vec).unwrap();
  + }
  +
  total_proving += start.elapsed();
  let start = Instant::now();
  + let proof = Proof::read(&proof_vec[..]).unwrap();
  // Check the proof
  assert!(verify_proof(
  &pvk,
  