diff --git a/src/bin/01.rs b/src/bin/01.rs index d30c8f6..bab983f 100644 --- a/src/bin/01.rs +++ b/src/bin/01.rs @@ -8,7 +8,7 @@ pub fn part_two(input: &str) -> Option { match c { '(' => floor += 1, ')' => floor -= 1, - _ => panic!("oops {}", c), + _ => panic!("oops {c}"), }; if floor < 0 { diff --git a/src/bin/11.rs b/src/bin/11.rs index ad0b884..5319428 100644 --- a/src/bin/11.rs +++ b/src/bin/11.rs @@ -14,7 +14,7 @@ fn allowed_password(password: &str) -> bool { if password .chars() .tuple_windows() - .map(|(a, b, c)| ASCII_LOWERCASE.contains(&format!("{}{}{}", a, b, c))) + .map(|(a, b, c)| ASCII_LOWERCASE.contains(&format!("{a}{b}{c}"))) .filter(|&y| y) .count() == 0 @@ -24,7 +24,7 @@ fn allowed_password(password: &str) -> bool { if ASCII_LOWERCASE .chars() - .map(|a| password.contains(&format!("{}{}", a, a))) + .map(|a| password.contains(&format!("{a}{a}"))) .filter(|&y| y) .count() < 2 @@ -107,11 +107,11 @@ mod tests { #[test] fn test_part_one() { let input = aoc::read_file("test_inputs", 11); - assert_eq!(part_one(&input.trim()), Some("ghjaabcc".to_string())); + assert_eq!(part_one(input.trim()), Some("ghjaabcc".to_string())); } #[test] fn test_part_two() { let input = aoc::read_file("test_inputs", 11); - assert_eq!(part_two(&input.trim()), Some("ghjbbcdd".to_string())); + assert_eq!(part_two(input.trim()), Some("ghjbbcdd".to_string())); } } diff --git a/src/bin/12.rs b/src/bin/12.rs index ebda877..83ffce5 100644 --- a/src/bin/12.rs +++ b/src/bin/12.rs @@ -37,11 +37,11 @@ mod tests { #[test] fn test_part_one() { let input = aoc::read_file("test_inputs", 12); - assert_eq!(part_one(&input.trim()), Some(15)); + assert_eq!(part_one(input.trim()), Some(15)); } #[test] fn test_part_two() { let input = aoc::read_file("test_inputs", 12); - assert_eq!(part_two(&input.trim()), Some(0)); + assert_eq!(part_two(input.trim()), Some(0)); } } diff --git a/src/bin/13.rs b/src/bin/13.rs index d19a874..00e8fa1 100644 --- a/src/bin/13.rs +++ b/src/bin/13.rs @@ -87,11 +87,11 @@ mod tests { #[test] fn test_part_one() { let input = aoc::read_file("test_inputs", 13); - assert_eq!(part_one(&input.trim()), Some(330)); + assert_eq!(part_one(input.trim()), Some(330)); } #[test] fn test_part_two() { let input = aoc::read_file("test_inputs", 13); - assert_eq!(part_two(&input.trim()), Some(286)); + assert_eq!(part_two(input.trim()), Some(286)); } } diff --git a/src/bin/14.rs b/src/bin/14.rs index bf904e1..e80dad2 100644 --- a/src/bin/14.rs +++ b/src/bin/14.rs @@ -46,7 +46,7 @@ impl From<&str> for Reindeer { pub fn part_one(input: &str) -> Option { input .split('\n') - .map(|x| Reindeer::from(x)) + .map(Reindeer::from) .map(|y| { ((DISTANCE / y.cycle()) * y.duration + vec![DISTANCE % y.cycle(), y.duration].iter().min().unwrap()) @@ -71,7 +71,7 @@ impl Scoreboard { } pub fn part_two(input: &str) -> Option { - let reindeers = input.split('\n').map(|x| Reindeer::from(x)).collect_vec(); + let reindeers = input.split('\n').map(Reindeer::from).collect_vec(); let mut scoreboards = vec![Scoreboard::empty(); reindeers.len()]; for traveled in 0..DISTANCE { @@ -108,11 +108,11 @@ mod tests { #[test] fn test_part_one() { let input = aoc::read_file("test_inputs", 14); - assert_eq!(part_one(&input.trim()), Some(1120)); + assert_eq!(part_one(input.trim()), Some(1120)); } #[test] fn test_part_two() { let input = aoc::read_file("test_inputs", 14); - assert_eq!(part_two(&input.trim()), None); + assert_eq!(part_two(input.trim()), None); } } diff --git a/src/bin/download.rs b/src/bin/download.rs index ac0851f..95ceae5 100644 --- a/src/bin/download.rs +++ b/src/bin/download.rs @@ -13,7 +13,7 @@ fn main() { }; dotenv().ok(); - let day_padded = format!("{:02}", day); + let day_padded = format!("{day:02}"); let token = env::var("TOKEN").expect("$TOKEN is not set"); let year = env::var("YEAR") .expect("$YEAR is not set") @@ -21,7 +21,7 @@ fn main() { .expect("$YEAR must be a number"); let mut headers = header::HeaderMap::new(); - let mut session_header = header::HeaderValue::from_str(format!("session={}", token).as_str()) + let mut session_header = header::HeaderValue::from_str(format!("session={token}").as_str()) .expect("Error building cookie header"); session_header.set_sensitive(true); headers.insert(header::COOKIE, session_header); @@ -29,15 +29,14 @@ fn main() { let client = Client::builder().default_headers(headers).build().unwrap(); let res = client .get(format!( - "https://adventofcode.com/{}/day/{}/input", - year, day + "https://adventofcode.com/{year}/day/{day}/input" )) .send() .unwrap() .text() .unwrap(); - let input_path = format!("src/inputs/{}.txt", day_padded); + let input_path = format!("src/inputs/{day_padded}.txt"); let mut file = match OpenOptions::new() .write(true) .create(true) @@ -45,7 +44,7 @@ fn main() { { Ok(file) => file, Err(e) => { - eprintln!("Failed to create module file: {}", e); + eprintln!("Failed to create module file: {e}"); process::exit(1); } }; @@ -55,7 +54,7 @@ fn main() { println!("Downloaded input file \"{}\"", &input_path); } Err(e) => { - eprintln!("Failed to write module contents: {}", e); + eprintln!("Failed to write module contents: {e}"); process::exit(1); } } diff --git a/src/bin/prepare.rs b/src/bin/prepare.rs index b04aa83..579d994 100644 --- a/src/bin/prepare.rs +++ b/src/bin/prepare.rs @@ -52,16 +52,16 @@ fn main() { } }; - let day_padded = format!("{:02}", day); + let day_padded = format!("{day:02}"); - let input_path = format!("src/inputs/{}.txt", day_padded); - let example_path = format!("src/test_inputs/{}.txt", day_padded); - let module_path = format!("src/bin/{}.rs", day_padded); + let input_path = format!("src/inputs/{day_padded}.txt"); + let example_path = format!("src/test_inputs/{day_padded}.txt"); + let module_path = format!("src/bin/{day_padded}.rs"); let mut file = match safe_create_file(&module_path) { Ok(file) => file, Err(e) => { - eprintln!("Failed to create module file: {}", e); + eprintln!("Failed to create module file: {e}"); process::exit(1); } }; @@ -71,7 +71,7 @@ fn main() { println!("Created module file \"{}\"", &module_path); } Err(e) => { - eprintln!("Failed to write module contents: {}", e); + eprintln!("Failed to write module contents: {e}"); process::exit(1); } } @@ -81,7 +81,7 @@ fn main() { println!("Created empty input file \"{}\"", &input_path); } Err(e) => { - eprintln!("Failed to create input file: {}", e); + eprintln!("Failed to create input file: {e}"); process::exit(1); } } @@ -91,7 +91,7 @@ fn main() { println!("Created empty example file \"{}\"", &example_path); } Err(e) => { - eprintln!("Failed to create example file: {}", e); + eprintln!("Failed to create example file: {e}"); process::exit(1); } } diff --git a/src/lib.rs b/src/lib.rs index 70e577e..855ea27 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -44,7 +44,7 @@ macro_rules! solve { pub fn read_file(folder: &str, day: u8) -> String { let cwd = env::current_dir().unwrap(); - let filepath = cwd.join("src").join(folder).join(format!("{:02}.txt", day)); + let filepath = cwd.join("src").join(folder).join(format!("{day:02}.txt")); let f = fs::read_to_string(filepath); f.expect("could not open input file") @@ -104,8 +104,7 @@ mod tests { fn test_parse_exec_time() { assert_approx_eq!( parse_exec_time(&format!( - "šŸŽ„ Part 1 šŸŽ„\n0 (elapsed: 74.13ns){}\nšŸŽ„ Part 2 šŸŽ„\n0 (elapsed: 50.00ns){}", - ANSI_RESET, ANSI_RESET + "šŸŽ„ Part 1 šŸŽ„\n0 (elapsed: 74.13ns){ANSI_RESET}\nšŸŽ„ Part 2 šŸŽ„\n0 (elapsed: 50.00ns){ANSI_RESET}" )), 0_f64 ); diff --git a/src/main.rs b/src/main.rs index fd13201..3805710 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,7 +8,7 @@ use std::process::Command; fn main() { let total: f64 = (1..=25) .map(|day| { - let day = format!("{:02}", day); + let day = format!("{day:02}"); let cmd = Command::new("cargo") .args(["run", "--release", "--bin", &day]) @@ -16,7 +16,7 @@ fn main() { .unwrap(); println!("----------"); - println!("{}| Day {} |{}", ANSI_BOLD, day, ANSI_RESET); + println!("{ANSI_BOLD}| Day {day} |{ANSI_RESET}"); println!("----------"); let output = String::from_utf8(cmd.stdout).unwrap(); @@ -40,7 +40,6 @@ fn main() { .sum(); println!( - "{}Total:{} {}{:.2}ms{}", - ANSI_BOLD, ANSI_RESET, ANSI_ITALIC, total, ANSI_RESET + "{ANSI_BOLD}Total:{ANSI_RESET} {ANSI_ITALIC}{total:.2}ms{ANSI_RESET}" ); }