steel_core/inventory/container/
result.rs1use core::slice;
2use std::mem;
3
4use steel_registry::item_stack::ItemStack;
5use steel_utils::{DowncastType, DowncastTypeKey};
6
7use crate::inventory::container::Container;
8
9pub struct ResultContainer {
11 result: ItemStack,
12}
13
14unsafe impl DowncastType for ResultContainer {
16 const TYPE_KEY: DowncastTypeKey = DowncastTypeKey::new("steel:container/result");
17}
18
19impl ResultContainer {
20 #[must_use]
22 pub fn new() -> Self {
23 Self {
24 result: ItemStack::empty(),
25 }
26 }
27}
28
29impl Default for ResultContainer {
30 fn default() -> Self {
31 Self::new()
32 }
33}
34
35impl Container for ResultContainer {
36 fn get_container_size(&self) -> usize {
37 1
38 }
39
40 fn get_item(&self, _slot: usize) -> &ItemStack {
41 &self.result
42 }
43
44 fn get_item_mut(&mut self, _slot: usize) -> &mut ItemStack {
45 &mut self.result
46 }
47
48 fn set_item(&mut self, _slot: usize, stack: ItemStack) {
49 self.result = stack;
50 }
51
52 fn remove_item(&mut self, _slot: usize, _count: i32) -> ItemStack {
61 mem::take(&mut self.result)
62 }
63
64 fn set_changed(&mut self) {
65 }
67
68 fn items(&self) -> &[ItemStack] {
69 slice::from_ref(&self.result)
70 }
71
72 fn items_mut(&mut self) -> &mut [ItemStack] {
73 slice::from_mut(&mut self.result)
74 }
75}