use serde::{Deserialize, Serialize};
use crate::InventoryItemInfo;
#[derive(Clone, Deserialize, Serialize)]
pub struct InventoryFunctionItem {
name: String,
}
impl InventoryFunctionItem {
pub fn new(name: String) -> Self {
Self { name }
}
}
impl InventoryItemInfo for InventoryFunctionItem {
fn name(&self) -> String {
self.name.clone()
}
}
#[derive(Clone, Deserialize, Serialize)]
pub struct InventoryTraitItem {
name: String,
}
impl InventoryTraitItem {
pub fn new(name: String) -> Self {
Self { name }
}
}
impl InventoryItemInfo for InventoryTraitItem {
fn name(&self) -> String {
self.name.clone()
}
}
#[derive(Clone, Deserialize, Serialize)]
pub enum InventoryItem {
Function(InventoryFunctionItem),
Trait(InventoryTraitItem),
}
impl InventoryItemInfo for InventoryItem {
fn name(&self) -> String {
match self {
InventoryItem::Function(item) => item.name(),
InventoryItem::Trait(item) => item.name(),
}
}
}