swimming

Crates.ioswimming
lib.rsswimming
version0.1.3
sourcesrc
created_at2024-03-04 20:35:09.880075
updated_at2024-05-01 22:20:28.311857
descriptionDive into Efficiency with Swimming: A High-Performance, No-Nonsense Connection Pool
homepage
repositoryhttps://github.com/IronVelo/swimming
max_upload_size
id1162237
size39,459
Cleve Green (CleveGreen)

documentation

README

swimming

swimming is a no_std, no_alloc, high-performance, asynchronous, thread-safe, and fair connection pooling crate for Rust. It provides a simple and efficient way to manage and reuse connections in your applications.

Features

  • no_std and no_alloc compatibility
  • High performance with lazy and eager connection initialization
  • Asynchronous and thread-safe operations
  • Fair connection retrieval mechanism
  • Flexible and extensible design
  • Robust error handling
  • Environment agnostic

Installation

To use swimming in your Rust project, add the following to your Cargo.toml file:

[dependencies]
swimming = "0.1.3"

Usage

Here's a simple example of how to use swimming:

use swimming::{Pool, Connection};
use std::net::SocketAddr;

struct MyConnection;

impl Connection for MyConnection {
    type Context = SocketAddr;
    type Error = ();

    async fn create(_ctx: &SocketAddr) -> Result<Self, Self::Error> {
        Ok(MyConnection)
    }

    fn needs_health_check(&mut self, _ctx: &SocketAddr) -> bool {
        false
    }

    async fn health_check(&mut self, _ctx: &SocketAddr) -> Result<(), ()> {
        Ok(())
    }
}

async fn example() {
    // create the pool providing the context, in general usage this would be details primarily pertinent to creating
    // the connection. 
    let pool = Pool::<MyConnection, 10>::new("127.0.0.1:8080".parse().unwrap());

    let conn = pool.get().await.unwrap();
    // Use the connection...
}

For more detailed usage examples and API documentation, please refer to the Pool's documentation.

License

This crate is licensed under the MIT or Apache 2.0 license at your preference.

Commit count: 6

cargo fmt