summaryrefslogtreecommitdiffstats
path: root/src/assets.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets.rs')
-rw-r--r--src/assets.rs13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/assets.rs b/src/assets.rs
index 9b0b7a7..f7d0977 100644
--- a/src/assets.rs
+++ b/src/assets.rs
@@ -1,3 +1,4 @@
+use std::collections::HashMap;
use std::fmt::Formatter;
use std::marker::PhantomData;
use serde::{Deserialize, Deserializer};
@@ -20,7 +21,7 @@ pub struct AssetIndex {
pub map_to_resources: bool,
#[serde(deserialize_with = "deserialize_assets")]
- pub objects: Vec<Asset>
+ pub objects: HashMap<String, Asset>
}
trait SetName {
@@ -33,7 +34,7 @@ impl SetName for Asset {
}
}
-fn deserialize_assets<'de, D, T>(deserializer: D) -> Result<Vec<T>, D::Error>
+fn deserialize_assets<'de, D, T>(deserializer: D) -> Result<HashMap<String, T>, D::Error>
where
D: Deserializer<'de>,
T: SetName + Deserialize<'de>
@@ -44,7 +45,7 @@ where
where
T: SetName + Deserialize<'de>
{
- type Value = Vec<T>;
+ type Value = HashMap<String, T>;
fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result {
formatter.write_str("asset objects map")
@@ -54,11 +55,11 @@ where
where
A: MapAccess<'de>,
{
- let mut out = Vec::new();
+ let mut out = HashMap::new();
while let Some((key, mut asset)) = map.next_entry::<String, T>()? {
- asset.set_name(key);
- out.push(asset);
+ asset.set_name(key.clone());
+ out.insert(key, asset);
}
Ok(out)