7个版本

0.1.0 2024年2月18日
0.1.0-rc.72024年2月15日
0.1.0-rc.62023年8月29日
0.1.0-rc.52023年5月14日
0.1.0-rc.22021年8月28日

1249 in 网络编程


2个Crates中使用(通过bgpfu-lib

MIT许可证

62KB
1.5K SLoC

irrc-rs

Crates.io ci/cd codecov docs.rs

关于

一个Rust库crate irrc,提供IRRd查询协议的客户端实现。


lib.rs:

本crate提供IRRd查询协议的客户端实现。

实现提供了通过单个TCP连接的最大性能的管道化查询执行。

快速入门

use irrc::{IrrClient, Query, Error};
use rpsl::names::AutNum;

fn main() -> Result<(), Error> {

    let mut irr = IrrClient::new("whois.radb.net:43")
        .connect()?;

    println!("connected to {}", irr.version()?);

    let as_set = "AS-FOO".parse().unwrap();
    println!("getting members of {}", as_set);
    irr.pipeline()
        .push(Query::AsSetMembersRecursive(as_set))?
        .responses::<AutNum>()
        .filter_map(|result| {
            result.map_err(|err| {
                println!("error parsing member: {}", err);
                err
            })
            .ok()
        })
        .for_each(|autnum| println!("{}", autnum.content()));

    Ok(())
}

依赖项

~16MB
~139K SLoC