rust/hg-core/examples/nodemap/main.rs
author Raphaël Gomès <rgomes@octobus.net>
Mon, 14 Nov 2022 17:14:20 +0100
changeset 49636 14bfd22a57a9
parent 47955 e834b79def74
child 49914 58074252db3c
permissions -rw-r--r--
hg-core: upgrade `clap` dependency Upgrading is a finally possible now that we're supporting a more recent version of Rust. This required changes in the `nodemap` example.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44386
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::*;
47955
e834b79def74 rust: Switch to the memmap2-rs crate
Simon Sapin <simon.sapin@octobus.net>
parents: 46432
diff changeset
     9
use memmap2::MmapOptions;
44386
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() {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    39
        let rev = rev as Revision;
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());
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    43
    file.write(&nm.into_readonly_and_added_bytes().1)?;
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();
46432
18a261b11b20 rust: Remove hex parsing from the nodemap
Simon Sapin <simon.sapin@octobus.net>
parents: 46427
diff changeset
    50
    let res = NodePrefix::from_hex(prefix).map(|p| nm.find_bin(index, p));
44386
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)
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    58
        .map(|_| {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    59
            index
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    60
                .node((rng.gen::<u32>() % len) as Revision)
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    61
                .unwrap()
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    62
                .clone()
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    63
        })
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    64
        .collect();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    65
    if queries < 10 {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    66
        let nodes_hex: Vec<String> =
46427
6380efb82191 rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net>
parents: 44386
diff changeset
    67
            nodes.iter().map(|n| format!("{:x}", n)).collect();
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    68
        println!("Nodes: {:?}", nodes_hex);
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    69
    }
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    70
    let mut last: Option<Revision> = None;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    71
    let start = Instant::now();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    72
    for node in nodes.iter() {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    73
        last = nm.find_bin(index, node.into()).unwrap();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    74
    }
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    75
    let elapsed = start.elapsed();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    76
    println!(
46427
6380efb82191 rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net>
parents: 44386
diff changeset
    77
        "Did {} queries in {:?} (mean {:?}), last was {:x} with result {:?}",
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    78
        queries,
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    79
        elapsed,
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    80
        elapsed / (queries as u32),
46427
6380efb82191 rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net>
parents: 44386
diff changeset
    81
        nodes.last().unwrap(),
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    82
        last
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
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    86
fn main() {
49636
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    87
    use clap::{Parser, Subcommand};
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    88
49636
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    89
    #[derive(Parser)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    90
    #[command()]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    91
    /// Nodemap pure Rust example
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    92
    struct App {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    93
        // Path to the repository, always necessary for its index
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    94
        #[arg(short, long)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    95
        repository: PathBuf,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    96
        // Path to the nodemap file, independent of REPOSITORY
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    97
        #[arg(short, long)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    98
        nodemap_file: PathBuf,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    99
        #[command(subcommand)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   100
        command: Command,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   101
    }
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
   102
49636
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   103
    #[derive(Subcommand)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   104
    enum Command {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   105
        /// Create `NODEMAP_FILE` by scanning repository index
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   106
        Create,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   107
        /// Query `NODEMAP_FILE` for `prefix`
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   108
        Query { prefix: String },
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   109
        /// Perform #`QUERIES` random successful queries on `NODEMAP_FILE`
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   110
        Bench { queries: usize },
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
   111
    }
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
   112
49636
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   113
    let app = App::parse();
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   114
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   115
    let repo = &app.repository;
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   116
    let nm_path = &app.nodemap_file;
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   117
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   118
    let index = mmap_index(repo);
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   119
    let nm = mmap_nodemap(nm_path);
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   120
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   121
    match &app.command {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   122
        Command::Create => {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   123
            println!(
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   124
                "Creating nodemap file {} for repository {}",
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   125
                nm_path.display(),
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   126
                repo.display()
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   127
            );
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   128
            create(&index, &Path::new(nm_path)).unwrap();
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   129
        }
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   130
        Command::Bench { queries } => {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   131
            println!(
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   132
                "Doing {} random queries in nodemap file {} of repository {}",
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   133
                queries,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   134
                nm_path.display(),
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   135
                repo.display()
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   136
            );
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   137
            bench(&index, &nm, *queries);
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   138
        }
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   139
        Command::Query { prefix } => {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   140
            println!(
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   141
                "Querying {} in nodemap file {} of repository {}",
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   142
                prefix,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   143
                nm_path.display(),
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   144
                repo.display()
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   145
            );
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   146
            query(&index, &nm, prefix);
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   147
        }
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
   148
    }
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
   149
}