aboutsummaryrefslogtreecommitdiff
path: root/azalea-inventory/src/default_components/mod.rs
blob: 2cc96d510d393e9413bfb81443324171d6a6158c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pub mod generated;

use azalea_registry::builtin::ItemKind;

use crate::components::DataComponentTrait;

/// A trait for data components that some [`ItemKind`]s may have a default value
/// for.
pub trait DefaultableComponent: DataComponentTrait {
    fn default_for_item(item: ItemKind) -> Option<Self>
    where
        Self: Sized;
}
impl<T: DataComponentTrait> DefaultableComponent for T {
    default fn default_for_item(_item: ItemKind) -> Option<Self> {
        None
    }
}
pub fn get_default_component<T: DefaultableComponent>(item: ItemKind) -> Option<T> {
    T::default_for_item(item)
}