Mercurial > public > mercurial-scm > hg-stable
annotate rust/hg-core/examples/nodemap/main.rs @ 50990:4c5f6e95df84
rust: make `Revision` a newtype
This change is the one we've been building towards during this series.
The aim is to make `Revision` mean more than a simple integer, holding
the information that it is valid for a given revlog index.
While this still allows for programmer error, since creating a revision
directly and querying a different index with a "checked" revision are
still possible, the friction created by the newtype will hopefully make
us think twice about which type to use.
Enough of the Rust ecosystem relies on the newtype pattern to be
efficiently optimized away (even compiler in codegen tests?), so I'm not
worried about this being a fundamental problem.
[1] https://github.com/rust-lang/rust/blob/7a70647f195f6b0a0f1ebd72b1542ba91a32f43a/tests/codegen/vec-in-place.rs#L47
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Fri, 18 Aug 2023 14:34:29 +0200 |
parents | 0d301f4180f5 |
children |
rev | line source |
---|---|
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
1 // Copyright 2019-2020 Georges Racinet <georges.racinet@octobus.net> |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
2 // |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
3 // This software may be used and distributed according to the terms of the |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
4 // GNU General Public License version 2 or any later version. |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
5 |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
6 use hg::revlog::node::*; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
7 use hg::revlog::nodemap::*; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
8 use hg::revlog::*; |
47983
e834b79def74
rust: Switch to the memmap2-rs crate
Simon Sapin <simon.sapin@octobus.net>
parents:
46500
diff
changeset
|
9 use memmap2::MmapOptions; |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
10 use rand::Rng; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
11 use std::fs::File; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
12 use std::io; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
13 use std::io::Write; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
14 use std::path::{Path, PathBuf}; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
15 use std::time::Instant; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
16 |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
17 mod index; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
18 use index::Index; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
19 |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
20 fn mmap_index(repo_path: &Path) -> Index { |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
21 let mut path = PathBuf::from(repo_path); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
22 path.extend([".hg", "store", "00changelog.i"].iter()); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
23 Index::load_mmap(path) |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
24 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
25 |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
26 fn mmap_nodemap(path: &Path) -> NodeTree { |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
27 let file = File::open(path).unwrap(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
28 let mmap = unsafe { MmapOptions::new().map(&file).unwrap() }; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
29 let len = mmap.len(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
30 NodeTree::load_bytes(Box::new(mmap), len) |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
31 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
32 |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
33 /// Scan the whole index and create the corresponding nodemap file at `path` |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
34 fn create(index: &Index, path: &Path) -> io::Result<()> { |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
35 let mut file = File::create(path)?; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
36 let start = Instant::now(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
37 let mut nm = NodeTree::default(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
38 for rev in 0..index.len() { |
50990
4c5f6e95df84
rust: make `Revision` a newtype
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49993
diff
changeset
|
39 let rev = Revision(rev as BaseRevision); |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
40 nm.insert(index, index.node(rev).unwrap(), rev).unwrap(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
41 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
42 eprintln!("Nodemap constructed in RAM in {:?}", start.elapsed()); |
49993
0d301f4180f5
rust-clippy: use `write_all` since we're not expecting a partial write
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49987
diff
changeset
|
43 file.write_all(&nm.into_readonly_and_added_bytes().1)?; |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
44 eprintln!("Nodemap written to disk"); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
45 Ok(()) |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
46 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
47 |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
48 fn query(index: &Index, nm: &NodeTree, prefix: &str) { |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
49 let start = Instant::now(); |
46500
18a261b11b20
rust: Remove hex parsing from the nodemap
Simon Sapin <simon.sapin@octobus.net>
parents:
46495
diff
changeset
|
50 let res = NodePrefix::from_hex(prefix).map(|p| nm.find_bin(index, p)); |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
51 println!("Result found in {:?}: {:?}", start.elapsed(), res); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
52 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
53 |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
54 fn bench(index: &Index, nm: &NodeTree, queries: usize) { |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
55 let len = index.len() as u32; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
56 let mut rng = rand::thread_rng(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
57 let nodes: Vec<Node> = (0..queries) |
50990
4c5f6e95df84
rust: make `Revision` a newtype
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49993
diff
changeset
|
58 .map(|_| { |
4c5f6e95df84
rust: make `Revision` a newtype
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49993
diff
changeset
|
59 *index |
4c5f6e95df84
rust: make `Revision` a newtype
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49993
diff
changeset
|
60 .node(Revision((rng.gen::<u32>() % len) as BaseRevision)) |
4c5f6e95df84
rust: make `Revision` a newtype
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49993
diff
changeset
|
61 .unwrap() |
4c5f6e95df84
rust: make `Revision` a newtype
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49993
diff
changeset
|
62 }) |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
63 .collect(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
64 if queries < 10 { |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
65 let nodes_hex: Vec<String> = |
46495
6380efb82191
rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net>
parents:
44417
diff
changeset
|
66 nodes.iter().map(|n| format!("{:x}", n)).collect(); |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
67 println!("Nodes: {:?}", nodes_hex); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
68 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
69 let mut last: Option<Revision> = None; |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
70 let start = Instant::now(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
71 for node in nodes.iter() { |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
72 last = nm.find_bin(index, node.into()).unwrap(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
73 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
74 let elapsed = start.elapsed(); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
75 println!( |
46495
6380efb82191
rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net>
parents:
44417
diff
changeset
|
76 "Did {} queries in {:?} (mean {:?}), last was {:x} with result {:?}", |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
77 queries, |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
78 elapsed, |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
79 elapsed / (queries as u32), |
46495
6380efb82191
rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net>
parents:
44417
diff
changeset
|
80 nodes.last().unwrap(), |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
81 last |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
82 ); |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
83 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
84 |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
85 fn main() { |
49755
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
86 use clap::{Parser, Subcommand}; |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
87 |
49755
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
88 #[derive(Parser)] |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
89 #[command()] |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
90 /// Nodemap pure Rust example |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
91 struct App { |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
92 // Path to the repository, always necessary for its index |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
93 #[arg(short, long)] |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
94 repository: PathBuf, |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
95 // Path to the nodemap file, independent of REPOSITORY |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
96 #[arg(short, long)] |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
97 nodemap_file: PathBuf, |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
98 #[command(subcommand)] |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
99 command: Command, |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
100 } |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
101 |
49755
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
102 #[derive(Subcommand)] |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
103 enum Command { |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
104 /// Create `NODEMAP_FILE` by scanning repository index |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
105 Create, |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
106 /// Query `NODEMAP_FILE` for `prefix` |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
107 Query { prefix: String }, |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
108 /// Perform #`QUERIES` random successful queries on `NODEMAP_FILE` |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
109 Bench { queries: usize }, |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
110 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
111 |
49755
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
112 let app = App::parse(); |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
113 |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
114 let repo = &app.repository; |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
115 let nm_path = &app.nodemap_file; |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
116 |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
117 let index = mmap_index(repo); |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
118 let nm = mmap_nodemap(nm_path); |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
119 |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
120 match &app.command { |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
121 Command::Create => { |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
122 println!( |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
123 "Creating nodemap file {} for repository {}", |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
124 nm_path.display(), |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
125 repo.display() |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
126 ); |
49987
58074252db3c
rust: run `cargo clippy`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49755
diff
changeset
|
127 create(&index, Path::new(nm_path)).unwrap(); |
49755
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
128 } |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
129 Command::Bench { queries } => { |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
130 println!( |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
131 "Doing {} random queries in nodemap file {} of repository {}", |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
132 queries, |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
133 nm_path.display(), |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
134 repo.display() |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
135 ); |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
136 bench(&index, &nm, *queries); |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
137 } |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
138 Command::Query { prefix } => { |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
139 println!( |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
140 "Querying {} in nodemap file {} of repository {}", |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
141 prefix, |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
142 nm_path.display(), |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
143 repo.display() |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
144 ); |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
145 query(&index, &nm, prefix); |
14bfd22a57a9
hg-core: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47983
diff
changeset
|
146 } |
44417
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
147 } |
8f7c6656ac79
rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff
changeset
|
148 } |