diff options
Diffstat (limited to 'engine/src/asset.rs')
| -rw-r--r-- | engine/src/asset.rs | 55 |
1 files changed, 37 insertions, 18 deletions
diff --git a/engine/src/asset.rs b/engine/src/asset.rs index dd8aa37..56b8a46 100644 --- a/engine/src/asset.rs +++ b/engine/src/asset.rs @@ -38,11 +38,12 @@ pub struct Label<'a> impl Label<'_> { + #[must_use] pub fn to_owned(&self) -> LabelOwned { LabelOwned { path: self.path.to_path_buf(), - name: self.name.as_ref().map(|name| name.to_string()), + name: self.name.as_ref().map(std::string::ToString::to_string), } } } @@ -82,7 +83,7 @@ impl Display for Label<'_> if let Some(name) = &self.name { formatter.write_str("::")?; - formatter.write_str(&name)?; + formatter.write_str(name)?; } Ok(()) @@ -98,6 +99,7 @@ pub struct LabelOwned impl LabelOwned { + #[must_use] pub fn to_label(&self) -> Label<'_> { Label { @@ -115,7 +117,7 @@ impl Display for LabelOwned if let Some(name) = &self.name { formatter.write_str("::")?; - formatter.write_str(&name)?; + formatter.write_str(name)?; } Ok(()) @@ -125,7 +127,7 @@ impl Display for LabelOwned #[derive(Debug, Sole)] pub struct Assets { - assets: Vec<StoredAsset>, + store: Vec<StoredAsset>, asset_lookup: RefCell<HashMap<LabelHash, LookupEntry>>, importers: Vec<WrappedImporterFn>, importer_lookup: HashMap<OsString, usize>, @@ -137,13 +139,14 @@ pub struct Assets impl Assets { + #[must_use] pub fn with_capacity(capacity: usize) -> Self { let (import_work_msg_sender, import_work_msg_receiver) = mpsc_channel::<ImportWorkMessage>(); Self { - assets: Vec::with_capacity(capacity), + store: Vec::with_capacity(capacity), asset_lookup: RefCell::new(HashMap::with_capacity(capacity)), importers: Vec::new(), importer_lookup: HashMap::new(), @@ -194,7 +197,9 @@ impl Assets tracing::Span::current() .record("asset_label", tracing::field::display(&asset_label)); - let stored_asset = self.assets.get(*asset_index).expect("Not possible"); + let Some(stored_asset) = self.store.get(*asset_index) else { + unreachable!(); + }; let Some(asset) = stored_asset.strong.downcast_ref::<Asset>() else { tracing::error!("Wrong asset type"); @@ -220,12 +225,14 @@ impl Assets return None; }; - let stored_asset = self.assets.get(*asset_index).expect("Not possible"); + let Some(stored_asset) = self.store.get(*asset_index) else { + unreachable!(); + }; if stored_asset.strong.downcast_ref::<Asset>().is_none() { tracing::error!("Wrong asset type"); return None; - }; + } Some(Handle::new(label_hash)) } @@ -243,7 +250,9 @@ impl Assets return false; }; - let stored_asset = self.assets.get(*asset_index).expect("Not possible"); + let Some(stored_asset) = self.store.get(*asset_index) else { + unreachable!(); + }; stored_asset.strong.downcast_ref::<Asset>().is_some() } @@ -306,7 +315,9 @@ impl Assets match lookup_entry { LookupEntry::Occupied(asset_index, _) => { - let stored_asset = self.assets.get(*asset_index).expect("Not possible"); + let Some(stored_asset) = self.store.get(*asset_index) else { + unreachable!(); + }; if stored_asset.strong.downcast_ref::<Asset>().is_none() { tracing::error!("Wrong asset type {}", type_name::<Asset>()); @@ -351,7 +362,9 @@ impl Assets match lookup_entry { LookupEntry::Occupied(asset_index, _) => { - let stored_asset = self.assets.get(*asset_index).expect("Not possible"); + let Some(stored_asset) = self.store.get(*asset_index) else { + unreachable!(); + }; if stored_asset.strong.downcast_ref::<Asset>().is_none() { tracing::error!( @@ -420,9 +433,9 @@ impl Assets tracing::debug!("Storing asset"); - self.assets.push(StoredAsset::new(asset)); + self.store.push(StoredAsset::new(asset)); - let index = self.assets.len() - 1; + let index = self.store.len() - 1; self.asset_lookup .get_mut() @@ -455,7 +468,7 @@ impl Assets if let Some(LookupEntry::Pending) = asset_lookup.get(&LabelHash::new(label)) { return true; - }; + } false } @@ -528,7 +541,11 @@ impl Assets { let index = *self.importer_lookup.get(file_ext)?; - Some(self.importers.get(index).expect("Not possible")) + let Some(importer) = self.importers.get(index) else { + unreachable!(); + }; + + Some(importer) } } @@ -660,11 +677,13 @@ pub struct Handle<Asset: 'static> impl<Asset: 'static> Handle<Asset> { + #[must_use] pub fn from_id(id: Id) -> Self { Self { id, _pd: PhantomData } } + #[must_use] pub fn id(&self) -> Id { self.id @@ -838,17 +857,17 @@ fn add_received_assets(mut assets: Single<Assets>) curr_tick_events.clear(); - while let Some(import_work_msg) = assets.import_work_msg_receiver.try_recv().ok() { + while let Ok(import_work_msg) = assets.import_work_msg_receiver.try_recv() { match import_work_msg { ImportWorkMessage::Store { do_store, label, asset } => { do_store(assets, label, asset); } ImportWorkMessage::Load { do_load, label, asset_settings } => { do_load( - &assets, + assets, Label { path: label.path.as_path().into(), - name: label.name.as_deref().map(|name| name.into()), + name: label.name.as_deref().map(std::convert::Into::into), }, asset_settings, ); |
