rogue_runtime/
inventory_item.rs

1use serde::{Deserialize, Serialize};
2
3use crate::InventoryItemInfo;
4
5#[derive(Clone, Deserialize, Serialize)]
6pub struct InventoryFunctionItem {
7    name: String,
8}
9
10impl InventoryFunctionItem {
11    pub fn new(name: String) -> Self {
12        Self { name }
13    }
14}
15
16impl InventoryItemInfo for InventoryFunctionItem {
17    fn name(&self) -> String {
18        self.name.clone()
19    }
20}
21
22#[derive(Clone, Deserialize, Serialize)]
23pub struct InventoryTraitItem {
24    name: String,
25}
26
27impl InventoryTraitItem {
28    pub fn new(name: String) -> Self {
29        Self { name }
30    }
31}
32
33impl InventoryItemInfo for InventoryTraitItem {
34    fn name(&self) -> String {
35        self.name.clone()
36    }
37}
38
39#[derive(Clone, Deserialize, Serialize)]
40pub enum InventoryItem {
41    Function(InventoryFunctionItem),
42    Trait(InventoryTraitItem),
43}
44
45impl InventoryItemInfo for InventoryItem {
46    fn name(&self) -> String {
47        match self {
48            InventoryItem::Function(item) => item.name(),
49            InventoryItem::Trait(item) => item.name(),
50        }
51    }
52}