diff options
Diffstat (limited to 'azalea-inventory/src/default_components/mod.rs')
| -rw-r--r-- | azalea-inventory/src/default_components/mod.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/azalea-inventory/src/default_components/mod.rs b/azalea-inventory/src/default_components/mod.rs new file mode 100644 index 00000000..e6150066 --- /dev/null +++ b/azalea-inventory/src/default_components/mod.rs @@ -0,0 +1,20 @@ +pub mod generated; + +use azalea_registry::Item; + +use crate::components::DataComponent; + +/// A [`DataComponent`] that some [`Item`]s may have a default value for. +pub trait DefaultableComponent: DataComponent { + fn default_for_item(item: Item) -> Option<Self> + where + Self: Sized; +} +impl<T: DataComponent> DefaultableComponent for T { + default fn default_for_item(_item: Item) -> Option<Self> { + None + } +} +pub fn get_default_component<T: DefaultableComponent>(item: Item) -> Option<T> { + T::default_for_item(item) +} |
