#![cfg(not(target_arch = "wasm32"))]
use {
goods::*,
std::{collections::HashMap, path::Path},
};
#[derive(Clone, Debug, serde::Deserialize, PartialEq, Eq)]
struct Object {
key: Kind,
#[serde(flatten)]
rest: HashMap<String, String>,
}
#[derive(Clone, Copy, Debug, serde::Deserialize, PartialEq, Eq)]
enum Kind {
#[serde(rename = "json")]
Json,
#[serde(rename = "yaml")]
Yaml,
}
impl SimpleAsset for Object {}
impl<K> AssetDefaultFormat<K> for Object {
type DefaultFormat = JsonFormat;
}
fn main() {
env_logger::init();
let registry = Registry::<String>::builder()
.with(FileSource::new(
Path::new(env!("CARGO_MANIFEST_DIR")).join("examples"),
))
.build();
let cache = Cache::new(registry, futures_executor::ThreadPool::new().unwrap());
let object_json: Handle<Object> = cache.load("asset.json".to_string());
let object_yaml: Handle<Object> = cache.load_with_format("asset.yaml".to_string(), YamlFormat);
while object_json.is_pending() || object_yaml.is_pending() {
std::thread::yield_now();
}
log::info!("From json: {:#?}", object_json.get().unwrap());
log::info!("From yaml: {:#?}", object_yaml.get().unwrap());
}