use std::sync::Arc;
use tempfile::tempdir;
use tokio::runtime::Handle;
use file_backed::fbstore::{BinCodec, FBStore, PreparedPath};
use file_backed::{BackingStore, FBPool};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let temp_dir = tempdir()?;
let prepared_path = PreparedPath::new(temp_dir.path().to_path_buf(), vec![]).await;
let fb_store = FBStore::new(BinCodec, prepared_path); let store = Arc::new(BackingStore::new(fb_store, Handle::current()));
let pool: Arc<FBPool<String, _>> = Arc::new(FBPool::new(store.clone(), 2));
let mut items = Vec::new();
#[allow(clippy::vec_init_then_push)]
{
items.push(pool.insert("Hello".to_string()));
items.push(pool.insert("World".to_string()));
items.push(pool.insert("!".to_string())); }
let guard = items[0].load().await; println!("Loaded: {}", *guard);
assert_eq!(*guard, "Hello");
drop(guard);
drop(items);
store.finished().await;
Ok(())
}