simple-pool

Crates.iosimple-pool
lib.rssimple-pool
version0.0.18
sourcesrc
created_at2021-09-10 01:28:49.303582
updated_at2024-07-15 23:00:58.058298
descriptionSimple async pool for any kind of resources
homepage
repositoryhttps://github.com/alttch/simple-pool
max_upload_size
id449075
size13,133
YB (yblokh)

documentation

README

simple-pool

Simple and fast async pool for any kind of resources

The idea

This is a helper library to create custom pools of anything

Crate

https://crates.io/crates/simple-pool

Example

use simple_pool::ResourcePool;
use std::sync::Arc;
use tokio::net::TcpStream;

async fn test() {
    // create a local or static resource pool
    let resource_pool: Arc<ResourcePool<TcpStream>> =
        Arc::new(ResourcePool::new());
    {
        // put 20 tcp connections there
        for _ in 0..20 {
            let client = TcpStream::connect("127.0.0.1:80").await.unwrap();
            resource_pool.append(client);
        }
    }
    let n = 1_000_000;
    for _ in 0..n {
        let pool = resource_pool.clone();
        tokio::spawn(async move {
            // gets open tcp connection as soon as one is available
            let _client = pool.get().await;
        });
    }
}
Commit count: 49

cargo fmt