From 85194b3f0f4402d492086f00ee61c4a0820b9e05 Mon Sep 17 00:00:00 2001 From: Kate Korsaro Date: Sun, 16 Nov 2025 08:40:10 +0100 Subject: [PATCH] doc: add roll 3d6 example --- 01.workspace/oxidice_lib/examples/roll_3d6.rs | 6 +++++ 01.workspace/oxidice_lib/src/lib.rs | 5 ++++ 01.workspace/oxidice_lib/src/str/outcome.rs | 24 ++++++++++++------- 3 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 01.workspace/oxidice_lib/examples/roll_3d6.rs diff --git a/01.workspace/oxidice_lib/examples/roll_3d6.rs b/01.workspace/oxidice_lib/examples/roll_3d6.rs new file mode 100644 index 0000000..f17da49 --- /dev/null +++ b/01.workspace/oxidice_lib/examples/roll_3d6.rs @@ -0,0 +1,6 @@ +use oxidice_lib::dice::*; + +fn main() { + let outcome = Handful::grab(3, 6).roll(); + println!("{outcome}"); +} diff --git a/01.workspace/oxidice_lib/src/lib.rs b/01.workspace/oxidice_lib/src/lib.rs index 1752197..a581a58 100644 --- a/01.workspace/oxidice_lib/src/lib.rs +++ b/01.workspace/oxidice_lib/src/lib.rs @@ -12,3 +12,8 @@ pub(crate) use crate::str::die::O as Die; pub(crate) use crate::str::failed_to::E as FailedTo; pub(crate) use crate::str::handful::O as Handful; pub(crate) use crate::str::outcome::E as Outcome; + +pub mod dice { + pub use crate::str::handful::O as Handful; + pub use crate::str::outcome::E as Outcome; +} diff --git a/01.workspace/oxidice_lib/src/str/outcome.rs b/01.workspace/oxidice_lib/src/str/outcome.rs index b603d83..77dc7aa 100644 --- a/01.workspace/oxidice_lib/src/str/outcome.rs +++ b/01.workspace/oxidice_lib/src/str/outcome.rs @@ -1,5 +1,5 @@ use crate::*; -// use std::fmt::Display; +use std::fmt::Display; // use std::str::FromStr; #[derive(Debug, PartialEq, PartialOrd, Eq, Ord, Clone, Hash)] @@ -8,13 +8,21 @@ pub enum E { List(Vec), } -// impl Display for E { -// fn fmt(&self, f: &mut std::fmt::Formatter) -> std::result::Result<(), std::fmt::Error> { -// match self { -// Self::NoValue => write!(f, "NoValue"), -// } -// } -// } +impl Display for E { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::result::Result<(), std::fmt::Error> { + match self { + Self::Scalar(value) => write!(f, "[{}]", value), + Self::List(value) => { + let str_list = value + .iter() + .map(|item| item.to_string()) + .collect::>() + .join(", "); + write!(f, "[{}]", str_list) + } + } + } +} // impl FromStr for E { // type Err = Box;