add english readme for rust maker

This commit is contained in:
lionsoul2014 2026-02-25 23:13:29 +08:00
parent aaad26244d
commit 537e6f9306
5 changed files with 98 additions and 14 deletions

View File

@ -71,7 +71,7 @@ For API introductions, usage documentation, and test programs, please refer to t
| [Java](maker/java/README.md) | java xdb generation program | :white_check_mark: | :white_check_mark: |
| [Python](maker/python) | python xdb generation program | :white_check_mark: | :x: |
| [Csharp](maker/csharp) | csharp xdb generation program | :white_check_mark: | :x: |
| [Rust](maker/rust) | rust xdb generation program | :white_check_mark: | :white_check_mark: |
| [Rust](maker/rust/README.md) | rust xdb generation program | :white_check_mark: | :white_check_mark: |
| [C++](maker/cpp) | C++ xdb generation program | :white_check_mark: | :white_check_mark: |

View File

@ -70,7 +70,7 @@ API 介绍,使用文档和测试程序请参考如下 `maker` 生成程序下
| [Java](maker/java/README_zh.md) | java xdb 生成程序 | :white_check_mark: | :white_check_mark: |
| [Python](maker/python) | python xdb 生成程序 | :white_check_mark: | :x: |
| [Csharp](maker/csharp) | csharp xdb 生成程序 | :white_check_mark: | :x: |
| [Rust](maker/rust) | rust xdb 生成程序 | :white_check_mark: | :white_check_mark: |
| [Rust](maker/rust/README_zh.md) | rust xdb 生成程序 | :white_check_mark: | :white_check_mark: |
| [C++](maker/cpp) | C++ xdb 生成程序 | :white_check_mark: | :white_check_mark: |

View File

@ -51,4 +51,4 @@ For custom data fields during the generation process, please refer to [xdb-文
# Data Search/bench Test
All [bindings](../../binding/) provided search and bench test programs as well as usage documentation. You can use the searcher of your familiar language for query testing or bench testing to confirm the correctness and integrity of the data.
All [bindings](../../binding/) come with search and bench test programs as well as usage documentation. You can use the searcher of your familiar language for query testing or bench testing to confirm the correctness and integrity of the data.

View File

@ -1,13 +1,18 @@
# ip2region xdb rust 生成实现
:globe_with_meridians: [中文简体](README_zh.md) | [English](README.md)
# ip2region xdb rust generation implementation
## Program Compilation
## 程序编译
```bash
$ cd maker/rust/maker
$ cargo build -r
```
编译成功以后,执行文件位置 `./target/release/maker`
## `xdb` 数据生成
After successful compilation, the executable file is located at `./target/release/maker`
## `xdb` Data Generation
```bash
# CWD ip2region/maker/rust/maker
$ ./target/release/maker --help
@ -38,7 +43,8 @@ Options:
Print help (see a summary with '-h')
```
例如,使用默认的仓库 data/ 下默认的原始数据生成生成 xdb 文件到当前目录(`ip2region/maker/rust/maker`)
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`):
```bash
# ipv6
./target/release/maker --src=../../../data/ipv6_source.txt --dst=./target/ipv6.xdb --ip-version v6
@ -46,14 +52,16 @@ Options:
./target/release/maker --src=../../../data/ipv4_source.txt --dst=./target/ipv4.xdb --ip-version v4
```
## `xdb` 数据查询 和 bench 测试
## `xdb` Data Search and bench Test
基于xdb 格式的查询功能和测试见 [ip2region binding](../../binding)
For search functions and testing based on the xdb format, see [ip2region bindings](../../binding)
## 对比其他 maker 生成的 xdb 文件
推荐使用 `vbindiff`, 与其他文件的差异只有 create time 信息上有差异,其他数据都需要是一样的
## 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
golang 版本 maker 构建 xdb
```bash
$ cd maker golang
$ make
@ -61,11 +69,14 @@ $ ./xdb_maker gen --src=../../data/ipv4_source.txt --dst=./ip2region_v4.xdb --ve
$ ./xdb_maker gen --src=../../data/ipv6_source.txt --dst=./ip2region_v6.xdb --version=ipv6
```
对比 xdb 差异
Compare xdb differences
```bash
$ 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
```

73
maker/rust/README_zh.md Normal file
View File

@ -0,0 +1,73 @@
:globe_with_meridians: [中文简体](README_zh.md) | [English](README.md)
# ip2region xdb rust 生成实现
## 程序编译
```bash
$ cd maker/rust/maker
$ cargo build -r
```
编译成功以后,执行文件位置 `./target/release/maker`
## `xdb` 数据生成
```bash
# 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')
```
例如,使用默认的仓库 data/ 下默认的原始数据生成生成 xdb 文件到当前目录(`ip2region/maker/rust/maker`)
```bash
# 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` 数据查询 和 bench 测试
基于xdb 格式的查询功能和测试见 [ip2region binding](../../binding)
## 对比其他 maker 生成的 xdb 文件
推荐使用 `vbindiff`, 与其他文件的差异只有 create time 信息上有差异,其他数据都需要是一样的
golang 版本 maker 构建 xdb
```bash
$ 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
```
对比 xdb 差异
```bash
$ cd maker/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
$ vbindiff ./ipv4.xdb ../../golang/ip2region_v4.xdb
$ vbindiff ./ipv6.xdb ../../golang/ip2region_v6.xdb
```