summaryrefslogtreecommitdiff
path: root/crates/elfmind/src/noun/item.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/elfmind/src/noun/item.rs')
-rw-r--r--crates/elfmind/src/noun/item.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/crates/elfmind/src/noun/item.rs b/crates/elfmind/src/noun/item.rs
new file mode 100644
index 0000000..8ab58d3
--- /dev/null
+++ b/crates/elfmind/src/noun/item.rs
@@ -0,0 +1,20 @@
+use crate::knowledge::*;
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
+pub enum Item {
+ Apple,
+ BallroomKey,
+ Lumi,
+}
+impl From<Item> for Noun { fn from(x: Item) -> Self {Noun::Item(x)} }
+impl TryFrom<Noun> for Item {
+ type Error = ();
+ fn try_from(v: Noun) -> Result<Self, Self::Error> {
+ if let Noun::Item(x) = v { Ok(x) } else { Err(()) }
+ }
+}
+impl DisplayNoun for Item {
+ fn display_noun(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(f, "{:?}", self)
+ }
+}