#![cfg(not(target_arch = "wasm32"))]
extern crate alloc;
use {goods::*, std::collections::HashMap};
#[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;
}
#[tokio::main]
async fn main() {
env_logger::init();
let registry = Registry::builder()
.with(goods::ReqwestSource::new())
.build();
let cache = Cache::new(registry, Tokio::current());
let object_json: Handle<Object> =
cache.load("https://raw.githubusercontent.com/zakarumych/goods/master/examples/asset.json");
let object_yaml: Handle<Object> = cache.load_with_format(
"https://raw.githubusercontent.com/zakarumych/goods/master/examples/asset.yaml",
YamlFormat,
);
println!("From json: {:#?}", object_json.await);
println!("From yaml: {:#?}", object_yaml.await);
}