From 74372c1e334970f7f751ff2da37ec18a22fab04c Mon Sep 17 00:00:00 2001 From: kageru Date: Sat, 18 Dec 2021 18:14:54 +0100 Subject: [PATCH] day 18: disable box syntax --- 2021/src/bin/day18.rs | 17 +++++++---------- 2021/src/grid.rs | 4 ++-- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/2021/src/bin/day18.rs b/2021/src/bin/day18.rs index d28747c..2ccf554 100644 --- a/2021/src/bin/day18.rs +++ b/2021/src/bin/day18.rs @@ -1,4 +1,3 @@ -#![feature(box_syntax)] #![feature(test)] extern crate test; use aoc2021::common::*; @@ -11,7 +10,7 @@ type Parsed = Vec; impl Add for Node { type Output = Node; fn add(self, rhs: Self) -> Self::Output { - Node::Pair(box (self, rhs)) + Node::Pair(Box::new((self, rhs))) } } @@ -38,10 +37,10 @@ fn parse_node(raw: &str) -> (Node, usize) { if let Some(inner) = raw.strip_prefix('[') { let (first, offset) = parse_node(inner); let (second, offset2) = parse_node(&inner[offset..]); - (first + second, 1 /* the opening [ */ + offset + offset2 + 1 /* the comma */) + (first + second, offset + offset2 + 2 /* 1 for the opening [ and 1 for the comma */) } else { let n = raw.as_bytes()[0] - b'0'; - debug_assert!(n <= 9, "Number was {n}, raw was {raw}"); + debug_assert!(n <= 9); (Node::Number(n as _), 2) } } @@ -185,12 +184,10 @@ mod tests { let [first, second]: [Node; 2] = parse_input(TEST_INPUT_SINGLE_ADDITION).try_into().unwrap(); assert_eq!( first, - Node::Pair(box ( - Node::Pair(box (Node::Pair(box (Node::Pair(box (Node::Number(4), Node::Number(3))), Node::Number(4))), Node::Number(4))), - Node::Pair(box (Node::Number(7), Node::Pair(box (Node::Pair(box (Node::Number(8), Node::Number(4),)), Node::Number(9),)))) - )) + (((Node::Number(4) + Node::Number(3)) + Node::Number(4)) + Node::Number(4)) + + (Node::Number(7) + ((Node::Number(8) + Node::Number(4)) + Node::Number(9))) ); - assert_eq!(second, Node::Pair(box (Node::Number(1), Node::Number(1)))); + assert_eq!(second, (Node::Number(1) + Node::Number(1))); } #[test] @@ -227,7 +224,7 @@ mod tests { fn test_full_chain() { let lhs = parse_node("[[[[4,3],4],4],[7,[[8,4],9]]]").0; let rhs = parse_node("[1,1]").0; - let mut res = Node::Pair(box (lhs, rhs)); + let mut res = lhs + rhs; assert_eq!(res.to_string(), "[[[[[4,3],4],4],[7,[[8,4],9]]],[1,1]]"); let mut res2 = res.clone(); diff --git a/2021/src/grid.rs b/2021/src/grid.rs index 0574f99..bc594ee 100644 --- a/2021/src/grid.rs +++ b/2021/src/grid.rs @@ -70,8 +70,8 @@ impl Grid for VecGrid { } impl VecGrid { - pub fn from_bytes_2d T + Copy>(raw: &str, mut f: F) -> VecGrid { - VecGrid { fields: raw.lines().map(|l| l.bytes().map(|c| f(c)).collect()).collect() } + pub fn from_bytes_2d T + Copy>(raw: &str, f: F) -> VecGrid { + VecGrid { fields: raw.lines().map(|l| l.bytes().map(f).collect()).collect() } } }