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;