Feat: improve rust binding example read file
This commit is contained in:
parent
b16fe21506
commit
b5b00aeb87
|
|
@ -2,10 +2,19 @@ use clap::{Parser, Subcommand, ValueEnum};
|
||||||
|
|
||||||
/// Rust binding example for ip2region
|
/// Rust binding example for ip2region
|
||||||
///
|
///
|
||||||
/// `cargo run -- --xdb=../../../data/ip2region_v4.xdb bench ../../../data/ip.test.txt`
|
/// e.g
|
||||||
///
|
///
|
||||||
/// `cargo run -- --xdb=../../../data/ip2region_v4.xdb query`
|
/// ```
|
||||||
///
|
///
|
||||||
|
/// export XDB='../../../data/ip2region_v4.xdb'
|
||||||
|
///
|
||||||
|
/// export CHECK='../../../data/ipv4_source.txt'
|
||||||
|
///
|
||||||
|
/// cargo run -- --xdb=$XDB bench $CHECK
|
||||||
|
///
|
||||||
|
/// cargo run -- --xdb=$XDB query
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
pub struct Command {
|
pub struct Command {
|
||||||
/// xdb filepath, e.g. `../../../data/ip2region_v4.xdb`
|
/// xdb filepath, e.g. `../../../data/ip2region_v4.xdb`
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
extern crate core;
|
extern crate core;
|
||||||
|
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::Read;
|
use std::io::{BufRead, BufReader};
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use std::net::Ipv4Addr;
|
use std::net::Ipv4Addr;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
@ -14,13 +14,15 @@ use crate::cmd::{Action, CmdCachePolicy, Command};
|
||||||
mod cmd;
|
mod cmd;
|
||||||
|
|
||||||
fn bench(searcher: &Searcher, check_filepath: &str) {
|
fn bench(searcher: &Searcher, check_filepath: &str) {
|
||||||
|
let file = File::open(check_filepath).unwrap();
|
||||||
|
let reader = BufReader::new(file);
|
||||||
|
|
||||||
|
let lines = reader.lines().take(100_000).collect::<Vec<_>>();
|
||||||
let now = Instant::now();
|
let now = Instant::now();
|
||||||
let mut count = 0;
|
let mut count = 0;
|
||||||
let mut file = File::open(check_filepath).unwrap();
|
|
||||||
let mut contents = String::new();
|
|
||||||
file.read_to_string(&mut contents).unwrap();
|
|
||||||
|
|
||||||
for line in contents.split('\n') {
|
for line in lines {
|
||||||
|
let line = line.unwrap();
|
||||||
if !line.contains('|') {
|
if !line.contains('|') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue