IPDB RS library

example:

```rust use ipdb::Reader; use anyhow::; use lazy_static::;

lazystatic!{ static ref IPDB:Reader={ Reader::openfile("ipipfree.ipdb").unwrap() }; }

fn main()->Result<()> { let r= IPDB.find("199.193.127.3","CN")?; println!("{:?}",r); let r= IPDB.findcityinfo("199.193.127.3","CN")?; println!("{:?}",r); let r= IPDB.finddistrictinfo("199.193.127.3","CN")?; println!("{:?}",r); let r= IPDB.findidcinfo("199.193.127.3","CN")?; println!("{:?}",r); let r= IPDB.findbasestationinfo("199.193.127.3","CN")?; println!("{:?}",r); Ok(()) } shell .../.cargo/bin/cargo.exe run --color=always --package ipdb --example main Finished dev [unoptimized + debuginfo] target(s) in 0.05s Running target\debug\examples\main.exe ["美国", "加利福尼亚州", "洛杉矶", "", "it7.net", "34.052234", "-118.243685", "America/LosAngeles", "UTC-7", "", "1", "US", "NA"] CityInfo { countryname: "美国", regionname: "加利福尼亚州", cityname: "洛杉矶", ownerdomain: "", ispdomain: "it7.net", latitude: "34.052234", longitude: "-118.243685", timezone: "America/LosAngeles", utcoffset: "UTC-7", chinaadmincode: "", iddcode: "1", countrycode: "US", continentcode: "NA", idc: "", basestation: "", countrycode3: "", europeanunion: "", currencycode: "", currencyname: "", anycast: "" } DistrictInfo { countryname: "美国", regionname: "加利福尼亚州", cityname: "洛杉矶", ownerdomain: "", ispdomain: "it7.net", latitude: "34.052234", longitude: "-118.243685" } IdcInfo { countryname: "美国", regionname: "加利福尼亚州", cityname: "洛杉矶", ownerdomain: "", ispdomain: "it7.net", idc: "34.052234" } BaseStationInfo { countryname: "美国", regionname: "加利福尼亚州", cityname: "洛杉矶", ownerdomain: "", ispdomain: "it7.net", base_station: "34.052234" }

Process finished with exit code 0 ```

bench

shell running 12 tests test bench05::test_ipdb ... bench: 1,046 ns/iter (+/- 118) test bench05::test_ipdb_rs ... bench: 1,134 ns/iter (+/- 34) test bench10::test_ipdb ... bench: 527 ns/iter (+/- 16) test bench10::test_ipdb_rs ... bench: 1,130 ns/iter (+/- 66) test bench20::test_ipdb ... bench: 529 ns/iter (+/- 18) test bench20::test_ipdb_rs ... bench: 1,130 ns/iter (+/- 58) test bench40::test_ipdb ... bench: 527 ns/iter (+/- 52) test bench40::test_ipdb_rs ... bench: 1,129 ns/iter (+/- 37) test bench60::test_ipdb ... bench: 528 ns/iter (+/- 17) test bench60::test_ipdb_rs ... bench: 1,133 ns/iter (+/- 74) test bench80::test_ipdb ... bench: 527 ns/iter (+/- 21) test bench80::test_ipdb_rs ... bench: 1,128 ns/iter (+/- 49)