#连接池 # #无分配 #非阻塞 #无std

无std swimming

与Swimming一起深入效率:高性能、无废话的连接池

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

MIT/Apache

40KB
483

swimming

swimming是一个no_stdno_alloc、高性能、异步、线程安全且公平的连接池库,适用于Rust。它提供了一种简单有效的方式来管理和重用应用程序中的连接。

特性

  • no_stdno_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