05_deferred_fetch/
05_deferred_fetch.rs1use keket::{
2 database::AssetDatabase,
3 fetch::{AssetAwaitsAsyncFetch, deferred::DeferredAssetFetch, file::FileAssetFetch},
4 protocol::bytes::BytesAssetProtocol,
5};
6use std::error::Error;
7
8fn main() -> Result<(), Box<dyn Error>> {
9 let mut database = AssetDatabase::default()
11 .with_protocol(BytesAssetProtocol)
12 .with_fetch(DeferredAssetFetch::new(
14 FileAssetFetch::default().with_root("resources"),
15 ));
16
17 let package = database.ensure("bytes://package.zip")?;
18
19 while package.has::<AssetAwaitsAsyncFetch>(&database) {
21 println!("Package awaits async fetch done");
22 database.maintain()?;
23 }
24
25 database.maintain()?;
27
28 println!(
29 "Package byte size: {}",
30 package.access::<&Vec<u8>>(&database).len()
31 );
32 Ok(())
35}