From 2026a8a4ccce882f3503b1ab393dcb29a5211871 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 18 Jul 2021 20:52:42 +0100 Subject: [PATCH] jst-lower: Make ZUpdateSpec an enum, not a trait Signed-off-by: Ian Jackson --- jstest/jst-lower.rs | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/jstest/jst-lower.rs b/jstest/jst-lower.rs index cfb58a24..f63a902c 100644 --- a/jstest/jst-lower.rs +++ b/jstest/jst-lower.rs @@ -60,15 +60,20 @@ pub struct TestsAccumulator { tera: tera::Tera, } -pub trait ZUpdateSpec: Debug + Clone { - fn next(&self, last: &mut zcoord::Mutable) -> ZLevel; +#[derive(Debug,Clone)] +pub enum ZUpdateSpec { + Auto, } - -#[derive(Debug,Copy,Clone)] -pub struct ZUpdateAuto; -impl ZUpdateSpec for ZUpdateAuto { - fn next(&self, last: &mut zcoord::Mutable) -> ZLevel { - ZLevel { z: last.increment().unwrap(), zg: Generation(1000) } +use ZUpdateSpec as ZUS; + +impl ZUpdateSpec { + pub fn next(&self, last: &mut zcoord::Mutable) -> ZLevel { + match self { + ZUS::Auto => ZLevel { + z: last.increment().unwrap(), + zg: Generation(1000), + }, + } } } @@ -270,11 +275,10 @@ impl TestsAccumulator { } #[throws(Explode)] - pub fn add_test(&mut self, name: &str, zupd: Z, - pieces: Vec, - targets: Vec) + pub fn add_test(&mut self, name: &str, zupd: ZUpdateSpec, + pieces: Vec, + targets: Vec) where T: TryInto + Copy + Debug, - Z: ZUpdateSpec, { if let Some(only) = &self.tests.only { if name != only { return; } @@ -339,7 +343,7 @@ impl TestsAccumulator { ).enumerate() { if targets.is_empty() { continue } let name = format!("exhaustive-{:02x}", ti); - self.add_test(&name, ZUpdateAuto, pieces, targets)?; + self.add_test(&name, ZUS::Auto, pieces, targets)?; } } } @@ -365,14 +369,14 @@ fn main() { let mut ta = TestsAccumulator::new(&opts)?; - ta.add_test("simple", ZUpdateAuto, vec![ + ta.add_test("simple", ZUS::Auto, vec![ sp!("1.1", false, Yes), sp!("2.1", false, Yes), ], vec![ "2.1", ])?; - ta.add_test("pair", ZUpdateAuto, vec![ + ta.add_test("pair", ZUS::Auto, vec![ sp!("1.1", false, Yes), sp!("2.1", false, Yes), sp!("3.1", false, Yes), @@ -381,7 +385,7 @@ fn main() { "2.1", ])?; - ta.add_test("found-2021-07-07-raises", ZUpdateAuto, vec![ + ta.add_test("found-2021-07-07-raises", ZUS::Auto, vec![ sp!( "87.7", false, No), sp!( "81.7", false, Yes), sp!("110.7", false, Yes), // HELD 1#1 -- 2.30.2