rogue-runtime 0.1.0

Async RPC Runtime
Documentation
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(),
        }
    }
}