Expand description
Asynchronous data preloader library
This library provides functionality for asynchronously loading and caching data. You can perform other tasks while the data is loading, and retrieve the result immediately once loading is complete.
§Key Features
- Asynchronous Data Loading: Asynchronous data loading using Future
- Caching: Once loaded data is cached in memory for reuse
- Thread Safety: Can be safely used across multiple threads
- State Management: Clear state-based behavior (Idle, Start, Loading, Loaded)
§Usage Example
use preloader::Preloader;
use tokio;
#[tokio::main]
async fn main() {
let preloader = Preloader::new();
// Start asynchronous task
preloader.load(async {
// Simulate time-consuming task
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
"loaded data".to_string()
}).await;
// Get data (blocking)
match preloader.get().await {
Ok(data) => println!("Data: {}", data),
Err(e) => println!("Error: {}", e),
}
// Get data (non-blocking)
match preloader.try_get() {
Ok(data) => println!("Immediate data: {}", data),
Err(e) => println!("Not ready yet: {}", e),
}
}
§Module Structure
Preloader
: Main preloader struct
Structs§
- Preloader
- Asynchronous data preloader