use keket::{
database::AssetDatabase,
fetch::{AssetAwaitsAsyncFetch, deferred::DeferredAssetFetch, file::FileAssetFetch},
protocol::bytes::BytesAssetProtocol,
};
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
let mut database = AssetDatabase::default()
.with_protocol(BytesAssetProtocol)
.with_fetch(DeferredAssetFetch::new(
FileAssetFetch::default().with_root("resources"),
));
let package = database.ensure("bytes://package.zip")?;
while package.has::<AssetAwaitsAsyncFetch>(&database) {
println!("Package awaits async fetch done");
database.maintain()?;
}
database.maintain()?;
println!(
"Package byte size: {}",
package.access::<&Vec<u8>>(&database).len()
);
Ok(())
}