4个版本
0.1.3 | 2024年5月1日 |
---|---|
0.1.2 | 2024年4月1日 |
0.1.1 | 2024年3月4日 |
0.1.0 | 2024年3月4日 |
在并发分类中排名第375
40KB
483 行
swimming
swimming
是一个no_std
、no_alloc
、高性能、异步、线程安全且公平的连接池库,适用于Rust。它提供了一种简单有效的方式来管理和重用应用程序中的连接。
特性
no_std
和no_alloc
兼容性- 使用懒加载和急加载连接初始化实现高性能
- 异步和线程安全操作
- 公平的连接检索机制
- 灵活且可扩展的设计
- 健壮的错误处理
- 环境无关性
安装
要在Rust项目中使用swimming
,请将以下内容添加到您的Cargo.toml
文件中
[dependencies]
swimming = "0.1.3"
用法
以下是如何使用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...
}
有关更详细的用法示例和API文档,请参阅Pool
的文档。
许可证
此crate根据您的选择,许可为MIT或Apache 2.0许可证。
依赖项
~0.1–24MB
~337K SLoC