ip2region_private/maker/rust
Alice39s 819ad5605a
fix(license): align Rust binding and maker license metadata
- Change license to Apache-2.0 OR MIT
- Add missing license field to Rust maker
- Add LICENSE.md to crate roots for cargo packaging
2026-06-29 23:39:13 +09:00
..
maker fix(license): align Rust binding and maker license metadata 2026-06-29 23:39:13 +09:00
README.md add english readme for rust maker 2026-02-25 23:13:29 +08:00
README_zh.md add english readme for rust maker 2026-02-25 23:13:29 +08:00

README.md

🌐 中文简体 | English

ip2region xdb rust generation implementation

Program Compilation

$ cd maker/rust/maker
$ cargo build -r

After successful compilation, the executable file is located at ./target/release/maker

xdb Data Generation

# CWD ip2region/maker/rust/maker
$ ./target/release/maker --help
Usage: maker [OPTIONS] --src <SRC> --dst <DST> --ip-version <IP_VERSION>

Options:
      --src <SRC>
          ip source region txt filepath

      --dst <DST>
          generated xdb filepath

      --ip-version <IP_VERSION>
          Possible values:
          - v4: IPv4
          - v6: Ipv6

      --index-policy <INDEX_POLICY>
          index cache policy

          [default: vector-index]
          [possible values: vector-index, b-tree-index]

      --filter-fields <FILTER_FIELDS>
          region filter fields, the index of the fields, e.g. `1,2,3,5`

  -h, --help
          Print help (see a summary with '-h')

For example, use the default raw data under the repository's data/ directory to generate the xdb file to the current directory (ip2region/maker/rust/maker):

# ipv6
./target/release/maker --src=../../../data/ipv6_source.txt --dst=./target/ipv6.xdb --ip-version v6
# ipv4
./target/release/maker --src=../../../data/ipv4_source.txt --dst=./target/ipv4.xdb --ip-version v4

xdb Data Search and bench Test

For search functions and testing based on the xdb format, see ip2region bindings

Comparison with xdb files generated by other makers

It is recommended to use vbindiff. The only difference from other files should be the create time information; all other data must be identical.

Build xdb using the golang version maker

$ cd maker golang
$ make
$ ./xdb_maker gen --src=../../data/ipv4_source.txt --dst=./ip2region_v4.xdb --version=ipv4
$ ./xdb_maker gen --src=../../data/ipv6_source.txt --dst=./ip2region_v6.xdb --version=ipv6

Compare xdb differences

$ cd maker/rust/maker
# Generate xdb files using rust maker
$ ./target/release/maker --src=../../../data/ipv4_source.txt --dst=./target/ipv4.xdb --ip-version v4
$ ./target/release/maker --src=../../../data/ipv6_source.txt --dst=./target/ipv6.xdb --ip-version v6
# Compare with golang generated files
$ vbindiff ./ipv4.xdb ../../golang/ip2region_v4.xdb
$ vbindiff ./ipv6.xdb ../../golang/ip2region_v6.xdb