1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use std::io;
use std::io::Read;

extern crate advent_of_code_2016;
use advent_of_code_2016::*;
use advent_of_code_2016::errors::*;

fn main() {
  run(|| {
    let mut input = String::new();
    io::stdin().read_to_string(&mut input).ok();

    let solution = day_11::solve(&input)?;
    println!("{}", solution);

    Ok(())
  });
}

fn run<F>(f: F)
  where F: Fn() -> Result<()>
{
  if let Err(error) = f() {
    for error in error.iter() {
      println!("{}", error);
    }
    std::process::exit(1);
  }
}