From 8500dfae515ec4c90ece03b695d6c81ed90893f5 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sun, 13 Apr 2025 08:02:53 +0100 Subject: [PATCH] Bug in conversion from slice I forgot the analogue of truncating the Vec. But here we can truncate while it's still in cheap slice form, before making a Vec at all. --- src/finitenimber.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/finitenimber.rs b/src/finitenimber.rs index cb76756..782ff21 100644 --- a/src/finitenimber.rs +++ b/src/finitenimber.rs @@ -284,15 +284,17 @@ impl From> for FiniteNimber { impl From<&[Word]> for FiniteNimber { fn from(slice: &[Word]) -> FiniteNimber { - match slice + match dbg!(slice .iter() .enumerate() .rev() - .find(|(_index, word)| **word != 0) + .find(|(_index, word)| **word != 0)) { None => Self(FiniteNimberEnum::Single(0)), Some((0, w)) => Self(FiniteNimberEnum::Single(*w)), - Some(_) => Self(FiniteNimberEnum::Vector(slice.into())) + Some((pos, _)) => { + Self(FiniteNimberEnum::Vector(slice[..=pos].into())) + } } } } -- 2.30.2