9 unstable releases (3 breaking)

Uses new Rust 2024

0.4.2 Sep 19, 2025
0.4.1 Aug 26, 2025
0.3.4 Aug 21, 2025
0.3.0 Jul 31, 2025
0.1.0 Jul 30, 2025

#8 in #conn

Download history 104/week @ 2025-08-09 257/week @ 2025-08-16 250/week @ 2025-08-23 50/week @ 2025-08-30 6/week @ 2025-09-06 84/week @ 2025-09-13 77/week @ 2025-09-20 23/week @ 2025-09-27 4/week @ 2025-10-04 5/week @ 2025-10-11 5/week @ 2025-10-18

669 downloads per month
Used in udp-relay

MIT license

17KB
392 lines

udp连接池

async fn main() {
    init_log();

    let addr = Address::from("127.0.0.1:3002");

    // 创建udp池
    let pool = Arc::new(udp_pool::Pool::default());

    // 池里加bs
    pool.add_backend(addr.clone());

    // 设置最大数量
    pool.set_max_conn(Some(1));

    // 获取一个sender
    let r1 = pool
        .clone()
        .get("127.0.0.1:1000".parse().unwrap(), None)
        .await;
    assert_eq!(r1.is_ok(), true);
    assert_eq!(pool.get_cur_conn(), 1);

    // 获取第二个应该会报池满了的错误
    let r2 = pool
        .clone()
        .get("127.0.0.1:1001".parse().unwrap(), None)
        .await;
    assert_eq!(r2.is_err(), true);
    if let Err(net_pool::Error::PoolFull) = r2 {
    } else {
        assert!(false);
    }

    // 当前计数为1
    assert_eq!(pool.get_cur_conn(), 1);
    // 清除所有的
    pool.remove_backend(&addr);
    // 记数回归0
    assert_eq!(pool.get_cur_conn(), 0);
}

Dependencies

~2–15MB
~123K SLoC