```rust extern crate assets; extern crate futures; extern crate futurescpupool; extern crate serdejson;
use assets::{Asset, AssetFormat, AssetManager, FileLoader}; use futures::Future; use futures_cpupool::CpuPool;
use std::sync::Arc;
pub struct JSONAsset(serde_json::Value);
impl Asset for JSONAsset { type Data = JSONAsset; }
impl AssetFormat for JSONAsset {
type Input = Vec
#[inline]
fn format(bytes: Self::Input, _: Self::Options) -> Result<Self::Output, Self::Error> {
let data: serde_json::Value = serde_json::from_slice(&*bytes)?;
Ok(JSONAsset(data))
}
}
pub type JSONAssetManager
= AssetManager
fn main() { let pool = Arc::new(CpuPool::newnumcpus()); let file_loader = Arc::new(FileLoader::new());
let mut json_asset_manager = JSONAssetManager::new(file_loader, pool);
let handle = json_asset_manager.add("examples/assets/person.json", (), (), true);
let handle_future = json_asset_manager.future(&handle).unwrap();
println!("Total Assets {:?}", json_asset_manager.asset_count());
println!("Assets Loading {:?}", json_asset_manager.loading_count());
println!("Assets Loaded {:?}", json_asset_manager.loaded_count());
// wait for asset to load
handle_future.wait().unwrap();
println!("{:?}", json_asset_manager.get(&handle).unwrap());
} ```