48 releases

0.24.0 Jan 10, 2024
0.23.0 Apr 3, 2022
0.22.0 Mar 23, 2022
0.21.0 Jul 20, 2021
0.1.0 Nov 22, 2014

#25 in Database interfaces

Download history 127545/week @ 2024-08-15 127307/week @ 2024-08-22 122288/week @ 2024-08-29 147393/week @ 2024-09-05 143508/week @ 2024-09-12 147298/week @ 2024-09-19 142338/week @ 2024-09-26 165397/week @ 2024-10-03 155020/week @ 2024-10-10 170152/week @ 2024-10-17 200933/week @ 2024-10-24 164256/week @ 2024-10-31 187738/week @ 2024-11-07 168528/week @ 2024-11-14 149279/week @ 2024-11-21 68643/week @ 2024-11-28

607,610 downloads per month
Used in 34 crates (31 directly)

ISC license

60KB
1.5K SLoC

Rust MaxMind DB Reader

crates.io Released API docs Master API docs

This library reads the MaxMind DB format, including the GeoIP2 and GeoLite2 databases.

Building

To build everything:

cargo build

Testing

This crate manages its test data within a git submodule. To run the tests, you will first need to run the following command.

git submodule update --init

Usage

Add this to your Cargo.toml:

[dependencies]
maxminddb = "0.17"

and this to your crate root:

extern crate maxminddb;

API Documentation

The API docs are on GitHub Pages.

Example

See examples/lookup.rs for a basic example.

Benchmarks

The projects include benchmarks using Criterion.rs.

First you need to have a working copy of the GeoIP City database. You can fetch it from here.

Place it in the root folder as GeoIP2-City.mmdb.

Once this is done, run

cargo bench

If gnuplot is installed, Criterion.rs can generate an HTML report displaying the results of the benchmark under target/criterion/report/index.html.

Result of doing 100 random IP lookups:

Contributing

Contributions welcome! Please fork the repository and open a pull request with your changes.

License

This is free software, licensed under the ISC license.

Dependencies

~0.5–1.3MB
~28K SLoC