rogue_runtime/
inventory_item.rs1use 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}