From 3a3c1487bb7db5f2882dc12af7c0361707e47e22 Mon Sep 17 00:00:00 2001 From: Kate Korsaro Date: Wed, 19 Nov 2025 10:19:47 +0100 Subject: [PATCH] feat: add keep_lowest method to Outcome --- 01.workspace/oxidice_lib/src/imp/mod.rs | 1 + .../src/imp/outcome_keep_lowest.rs | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 01.workspace/oxidice_lib/src/imp/outcome_keep_lowest.rs diff --git a/01.workspace/oxidice_lib/src/imp/mod.rs b/01.workspace/oxidice_lib/src/imp/mod.rs index b0c6621..23a3bc9 100644 --- a/01.workspace/oxidice_lib/src/imp/mod.rs +++ b/01.workspace/oxidice_lib/src/imp/mod.rs @@ -5,3 +5,4 @@ pub mod outcome_keep_highest; pub mod outcome_max; pub mod outcome_min; pub mod outcome_sum; +pub mod outcome_keep_lowest; diff --git a/01.workspace/oxidice_lib/src/imp/outcome_keep_lowest.rs b/01.workspace/oxidice_lib/src/imp/outcome_keep_lowest.rs new file mode 100644 index 0000000..edfc38d --- /dev/null +++ b/01.workspace/oxidice_lib/src/imp/outcome_keep_lowest.rs @@ -0,0 +1,21 @@ +use crate::*; + +impl Outcome { + pub fn keep_lowest(self, dice_num: u16) -> Result { + if dice_num == 0 { + return Err(FailedTo::ProcessInput); + } + match self { + Outcome::Scalar(value) => Ok(Outcome::List(vec![value])), + Outcome::List(mut values) => { + values.sort(); + Ok(Outcome::List( + values.into_iter().take(dice_num as usize).collect(), + )) + } + } + } +} + +// #[cfg(test)] +// mod unit_tests { use super::*; }