Crate preloader

Source
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

Structs§

Preloader
Asynchronous data preloader

Enums§

PreloaderError