#ip-address #region #codes #countries #name #representation #build

ip2c

从IP地址获取国家和地区名称的代码

5个版本

0.1.5 2023年3月8日
0.1.4 2023年3月7日
0.1.3 2022年10月28日
0.1.1 2022年10月25日
0.1.0 2022年10月24日

#5 in #countries

Apache-2.0

28KB
572

IP2C

从IP地址获取国家和地区名称的代码。

您可以直接使用 rir::IpCodeMap 构建 IP 到国家地区名称表示的代码。

use ip2c::rir::IpCodeMap;

let mut map = IpCodeMap::new();
map.load_from_dir("./data").expect("load rir txt info failed");
let code = map.query("127.0.0.1".parse().unwrap());
println!("{}", code.unwrap());

此库不提供rir信息文件,您需要自行下载。
有关下载URL和官方txt格式的示例,请参阅example.txt

此外,您还可以使用 IpTree 构建 IP 城市位置映射,例如

use ip2c::IpTree;

let mut map = IpTree::new();
map.ipv4.insert_interval("101.204.128.0-101.204.130.0".parse().unwrap(), ("sichuan", "chengdu")).unwrap();
map.ipv4.insert_interval("208.0.0.0/22".parse().unwrap(), ("beijing", "beijing")).unwrap();
map.ipv4.insert_interval("208.1.3.6".parse().unwrap(), ("beijing", "beijing")).unwrap();
assert_eq!(map.ipv4.query("101.204.129.1".parse().unwrap()), Some(&("sichuan", "chengdu")));
assert_eq!(map.ipv4.query("208.0.3.47".parse().unwrap()), Some(&("beijing", "beijing")));
assert_eq!(map.ipv4.query("208.11.0.9".parse().unwrap()), None);

文档

无运行时依赖