Crates.io | swimming |
lib.rs | swimming |
version | 0.1.3 |
source | src |
created_at | 2024-03-04 20:35:09.880075 |
updated_at | 2024-05-01 22:20:28.311857 |
description | Dive into Efficiency with Swimming: A High-Performance, No-Nonsense Connection Pool |
homepage | |
repository | https://github.com/IronVelo/swimming |
max_upload_size | |
id | 1162237 |
size | 39,459 |
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.
no_std
and no_alloc
compatibilityTo use swimming
in your Rust project, add the following to your Cargo.toml
file:
[dependencies]
swimming = "0.1.3"
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.
This crate is licensed under the MIT or Apache 2.0 license at your preference.