kingslayer/entity/item/
thing.rs

1use serde::{Deserialize, Serialize};
2
3use crate::entity::Entity;
4
5#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
6pub struct Thing {
7    name: String,
8    desc: String,
9    inspect: String,
10}
11
12impl Thing {
13    pub fn new(name: &str, inspect: &str) -> Self {
14        Self {
15            name: name.to_owned(),
16            desc: format!("There is a {} here.", name),
17            inspect: inspect.to_owned(),
18        }
19    }
20
21    pub fn with_desc(mut self, desc: &str) -> Self {
22        self.desc = String::from(desc);
23        self
24    }
25}
26
27impl Entity for Thing {
28    fn name(&self) -> &str {
29        &self.name
30    }
31
32    fn desc(&self) -> &str {
33        &self.desc
34    }
35
36    fn inspect(&self) -> &str {
37        &self.inspect
38    }
39}