init
This commit is contained in:
commit
f001180f62
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/target
|
||||
*.bak
|
||||
*.~
|
||||
*.swp
|
||||
.idea
|
||||
.vscode
|
||||
.cache
|
||||
Cargo.lock
|
||||
7
Cargo.toml
Normal file
7
Cargo.toml
Normal file
@ -0,0 +1,7 @@
|
||||
[package]
|
||||
name = "sample_test"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
mace = { git = "https://git.o2c.fun/abby/mace" }
|
||||
48
src/main.rs
Normal file
48
src/main.rs
Normal file
@ -0,0 +1,48 @@
|
||||
use std::{
|
||||
fs::File,
|
||||
io::{BufRead, BufReader, Read},
|
||||
path::Path,
|
||||
};
|
||||
|
||||
use mace::{Mace, OpCode, Options};
|
||||
|
||||
fn main() -> Result<(), OpCode> {
|
||||
let sample_file = Path::new(env!("CARGO_MANIFEST_DIR")).join("sample");
|
||||
let mut opt = Options::new("/tmp/sample");
|
||||
opt.gc_ratio = 10;
|
||||
opt.gc_eager = true;
|
||||
opt.gc_timeout = 10000; // 10s
|
||||
opt.tmp_store = true;
|
||||
let db = Mace::new(opt.validate()?)?;
|
||||
|
||||
let f = File::open(sample_file).map_err(|_| OpCode::IoError)?;
|
||||
let mut r = BufReader::new(f);
|
||||
let mut data = Vec::new();
|
||||
let mut line = String::new();
|
||||
let mut nr_key = 0;
|
||||
|
||||
while let Ok(n) = r.read_line(&mut line)
|
||||
&& n > 0
|
||||
{
|
||||
line.pop(); // remove \n
|
||||
let rsz = line.split("_").last().unwrap();
|
||||
let sz = rsz.parse::<u32>().expect("can't parse") as usize;
|
||||
let v = vec![b'x'; sz];
|
||||
data.push((line.clone(), v));
|
||||
line.clear();
|
||||
nr_key += 1;
|
||||
}
|
||||
|
||||
for (k, v) in &data {
|
||||
let kv = db.begin()?;
|
||||
kv.upsert(k.as_bytes(), v)?;
|
||||
kv.commit()?;
|
||||
}
|
||||
println!("insert {nr_key} keys");
|
||||
|
||||
println!("press any key to exit...");
|
||||
let mut k = [0u8; 1];
|
||||
let _ = std::io::stdin().read(&mut k);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user