##// END OF EJS Templates
rust-nodemap: pure Rust example...
Georges Racinet -
r44870:8f7c6656 default
parent child Browse files
Show More
@@ -0,0 +1,95 b''
1 // Copyright 2019-2020 Georges Racinet <georges.racinet@octobus.net>
2 //
3 // This software may be used and distributed according to the terms of the
4 // GNU General Public License version 2 or any later version.
5
6 //! Minimal `RevlogIndex`, readable from standard Mercurial file format
7 use hg::*;
8 use memmap::*;
9 use std::fs::File;
10 use std::ops::Deref;
11 use std::path::Path;
12 use std::slice;
13
14 pub struct Index {
15 data: Box<dyn Deref<Target = [IndexEntry]> + Send>,
16 }
17
18 /// A fixed sized index entry. All numbers are big endian
19 #[repr(C)]
20 pub struct IndexEntry {
21 not_used_yet: [u8; 24],
22 p1: Revision,
23 p2: Revision,
24 node: Node,
25 unused_node: [u8; 12],
26 }
27
28 pub const INDEX_ENTRY_SIZE: usize = 64;
29
30 impl IndexEntry {
31 fn parents(&self) -> [Revision; 2] {
32 [Revision::from_be(self.p1), Revision::from_be(self.p1)]
33 }
34 }
35
36 impl RevlogIndex for Index {
37 fn len(&self) -> usize {
38 self.data.len()
39 }
40
41 fn node(&self, rev: Revision) -> Option<&Node> {
42 if rev == NULL_REVISION {
43 return None;
44 }
45 let i = rev as usize;
46 if i >= self.len() {
47 None
48 } else {
49 Some(&self.data[i].node)
50 }
51 }
52 }
53
54 impl Graph for &Index {
55 fn parents(&self, rev: Revision) -> Result<[Revision; 2], GraphError> {
56 let [p1, p2] = (*self).data[rev as usize].parents();
57 let len = (*self).len();
58 if p1 < NULL_REVISION
59 || p2 < NULL_REVISION
60 || p1 as usize >= len
61 || p2 as usize >= len
62 {
63 return Err(GraphError::ParentOutOfRange(rev));
64 }
65 Ok([p1, p2])
66 }
67 }
68
69 struct IndexMmap(Mmap);
70
71 impl Deref for IndexMmap {
72 type Target = [IndexEntry];
73
74 fn deref(&self) -> &[IndexEntry] {
75 let ptr = self.0.as_ptr() as *const IndexEntry;
76 // Any misaligned data will be ignored.
77 debug_assert_eq!(
78 self.0.len() % std::mem::align_of::<IndexEntry>(),
79 0,
80 "Misaligned data in mmap"
81 );
82 unsafe { slice::from_raw_parts(ptr, self.0.len() / INDEX_ENTRY_SIZE) }
83 }
84 }
85
86 impl Index {
87 pub fn load_mmap(path: impl AsRef<Path>) -> Self {
88 let file = File::open(path).unwrap();
89 let msg = "Index file is missing, or missing permission";
90 let mmap = unsafe { MmapOptions::new().map(&file) }.expect(msg);
91 Self {
92 data: Box::new(IndexMmap(mmap)),
93 }
94 }
95 }
@@ -0,0 +1,146 b''
1 // Copyright 2019-2020 Georges Racinet <georges.racinet@octobus.net>
2 //
3 // This software may be used and distributed according to the terms of the
4 // GNU General Public License version 2 or any later version.
5
6 use clap::*;
7 use hg::revlog::node::*;
8 use hg::revlog::nodemap::*;
9 use hg::revlog::*;
10 use memmap::MmapOptions;
11 use rand::Rng;
12 use std::fs::File;
13 use std::io;
14 use std::io::Write;
15 use std::path::{Path, PathBuf};
16 use std::str::FromStr;
17 use std::time::Instant;
18
19 mod index;
20 use index::Index;
21
22 fn mmap_index(repo_path: &Path) -> Index {
23 let mut path = PathBuf::from(repo_path);
24 path.extend([".hg", "store", "00changelog.i"].iter());
25 Index::load_mmap(path)
26 }
27
28 fn mmap_nodemap(path: &Path) -> NodeTree {
29 let file = File::open(path).unwrap();
30 let mmap = unsafe { MmapOptions::new().map(&file).unwrap() };
31 let len = mmap.len();
32 NodeTree::load_bytes(Box::new(mmap), len)
33 }
34
35 /// Scan the whole index and create the corresponding nodemap file at `path`
36 fn create(index: &Index, path: &Path) -> io::Result<()> {
37 let mut file = File::create(path)?;
38 let start = Instant::now();
39 let mut nm = NodeTree::default();
40 for rev in 0..index.len() {
41 let rev = rev as Revision;
42 nm.insert(index, index.node(rev).unwrap(), rev).unwrap();
43 }
44 eprintln!("Nodemap constructed in RAM in {:?}", start.elapsed());
45 file.write(&nm.into_readonly_and_added_bytes().1)?;
46 eprintln!("Nodemap written to disk");
47 Ok(())
48 }
49
50 fn query(index: &Index, nm: &NodeTree, prefix: &str) {
51 let start = Instant::now();
52 let res = nm.find_hex(index, prefix);
53 println!("Result found in {:?}: {:?}", start.elapsed(), res);
54 }
55
56 fn bench(index: &Index, nm: &NodeTree, queries: usize) {
57 let len = index.len() as u32;
58 let mut rng = rand::thread_rng();
59 let nodes: Vec<Node> = (0..queries)
60 .map(|_| {
61 index
62 .node((rng.gen::<u32>() % len) as Revision)
63 .unwrap()
64 .clone()
65 })
66 .collect();
67 if queries < 10 {
68 let nodes_hex: Vec<String> =
69 nodes.iter().map(|n| n.encode_hex()).collect();
70 println!("Nodes: {:?}", nodes_hex);
71 }
72 let mut last: Option<Revision> = None;
73 let start = Instant::now();
74 for node in nodes.iter() {
75 last = nm.find_bin(index, node.into()).unwrap();
76 }
77 let elapsed = start.elapsed();
78 println!(
79 "Did {} queries in {:?} (mean {:?}), last was {:?} with result {:?}",
80 queries,
81 elapsed,
82 elapsed / (queries as u32),
83 nodes.last().unwrap().encode_hex(),
84 last
85 );
86 }
87
88 fn main() {
89 let matches = App::new("Nodemap pure Rust example")
90 .arg(
91 Arg::with_name("REPOSITORY")
92 .help("Path to the repository, always necessary for its index")
93 .required(true),
94 )
95 .arg(
96 Arg::with_name("NODEMAP_FILE")
97 .help("Path to the nodemap file, independent of REPOSITORY")
98 .required(true),
99 )
100 .subcommand(
101 SubCommand::with_name("create")
102 .about("Create NODEMAP_FILE by scanning repository index"),
103 )
104 .subcommand(
105 SubCommand::with_name("query")
106 .about("Query NODEMAP_FILE for PREFIX")
107 .arg(Arg::with_name("PREFIX").required(true)),
108 )
109 .subcommand(
110 SubCommand::with_name("bench")
111 .about(
112 "Perform #QUERIES random successful queries on NODEMAP_FILE")
113 .arg(Arg::with_name("QUERIES").required(true)),
114 )
115 .get_matches();
116
117 let repo = matches.value_of("REPOSITORY").unwrap();
118 let nm_path = matches.value_of("NODEMAP_FILE").unwrap();
119
120 let index = mmap_index(&Path::new(repo));
121
122 if let Some(_) = matches.subcommand_matches("create") {
123 println!("Creating nodemap file {} for repository {}", nm_path, repo);
124 create(&index, &Path::new(nm_path)).unwrap();
125 return;
126 }
127
128 let nm = mmap_nodemap(&Path::new(nm_path));
129 if let Some(matches) = matches.subcommand_matches("query") {
130 let prefix = matches.value_of("PREFIX").unwrap();
131 println!(
132 "Querying {} in nodemap file {} of repository {}",
133 prefix, nm_path, repo
134 );
135 query(&index, &nm, prefix);
136 }
137 if let Some(matches) = matches.subcommand_matches("bench") {
138 let queries =
139 usize::from_str(matches.value_of("QUERIES").unwrap()).unwrap();
140 println!(
141 "Doing {} random queries in nodemap file {} of repository {}",
142 queries, nm_path, repo
143 );
144 bench(&index, &nm, queries);
145 }
146 }
@@ -1,672 +1,737 b''
1 1 # This file is automatically @generated by Cargo.
2 2 # It is not intended for manual editing.
3 3 [[package]]
4 4 name = "aho-corasick"
5 5 version = "0.7.8"
6 6 source = "registry+https://github.com/rust-lang/crates.io-index"
7 7 dependencies = [
8 8 "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
9 9 ]
10 10
11 11 [[package]]
12 12 name = "ansi_term"
13 13 version = "0.11.0"
14 14 source = "registry+https://github.com/rust-lang/crates.io-index"
15 15 dependencies = [
16 16 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
17 17 ]
18 18
19 19 [[package]]
20 name = "atty"
21 version = "0.2.14"
22 source = "registry+https://github.com/rust-lang/crates.io-index"
23 dependencies = [
24 "hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
25 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
26 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
27 ]
28
29 [[package]]
20 30 name = "autocfg"
21 31 version = "0.1.7"
22 32 source = "registry+https://github.com/rust-lang/crates.io-index"
23 33
24 34 [[package]]
25 35 name = "autocfg"
26 36 version = "1.0.0"
27 37 source = "registry+https://github.com/rust-lang/crates.io-index"
28 38
29 39 [[package]]
30 40 name = "bitflags"
31 41 version = "1.2.1"
32 42 source = "registry+https://github.com/rust-lang/crates.io-index"
33 43
34 44 [[package]]
35 45 name = "byteorder"
36 46 version = "1.3.2"
37 47 source = "registry+https://github.com/rust-lang/crates.io-index"
38 48
39 49 [[package]]
40 50 name = "c2-chacha"
41 51 version = "0.2.3"
42 52 source = "registry+https://github.com/rust-lang/crates.io-index"
43 53 dependencies = [
44 54 "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
45 55 ]
46 56
47 57 [[package]]
48 58 name = "cc"
49 59 version = "1.0.50"
50 60 source = "registry+https://github.com/rust-lang/crates.io-index"
51 61
52 62 [[package]]
53 63 name = "cfg-if"
54 64 version = "0.1.10"
55 65 source = "registry+https://github.com/rust-lang/crates.io-index"
56 66
57 67 [[package]]
68 name = "clap"
69 version = "2.33.0"
70 source = "registry+https://github.com/rust-lang/crates.io-index"
71 dependencies = [
72 "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
73 "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
74 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
75 "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
76 "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
77 "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
78 "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
79 ]
80
81 [[package]]
58 82 name = "cloudabi"
59 83 version = "0.0.3"
60 84 source = "registry+https://github.com/rust-lang/crates.io-index"
61 85 dependencies = [
62 86 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
63 87 ]
64 88
65 89 [[package]]
66 90 name = "cpython"
67 91 version = "0.4.1"
68 92 source = "registry+https://github.com/rust-lang/crates.io-index"
69 93 dependencies = [
70 94 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
71 95 "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
72 96 "python27-sys 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
73 97 "python3-sys 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
74 98 ]
75 99
76 100 [[package]]
77 101 name = "crossbeam-deque"
78 102 version = "0.7.2"
79 103 source = "registry+https://github.com/rust-lang/crates.io-index"
80 104 dependencies = [
81 105 "crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
82 106 "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
83 107 ]
84 108
85 109 [[package]]
86 110 name = "crossbeam-epoch"
87 111 version = "0.8.0"
88 112 source = "registry+https://github.com/rust-lang/crates.io-index"
89 113 dependencies = [
90 114 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
91 115 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
92 116 "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
93 117 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
94 118 "memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
95 119 "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
96 120 ]
97 121
98 122 [[package]]
99 123 name = "crossbeam-queue"
100 124 version = "0.2.1"
101 125 source = "registry+https://github.com/rust-lang/crates.io-index"
102 126 dependencies = [
103 127 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
104 128 "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
105 129 ]
106 130
107 131 [[package]]
108 132 name = "crossbeam-utils"
109 133 version = "0.7.0"
110 134 source = "registry+https://github.com/rust-lang/crates.io-index"
111 135 dependencies = [
112 136 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
113 137 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
114 138 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
115 139 ]
116 140
117 141 [[package]]
118 142 name = "ctor"
119 143 version = "0.1.12"
120 144 source = "registry+https://github.com/rust-lang/crates.io-index"
121 145 dependencies = [
122 146 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
123 147 "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
124 148 ]
125 149
126 150 [[package]]
127 151 name = "difference"
128 152 version = "2.0.0"
129 153 source = "registry+https://github.com/rust-lang/crates.io-index"
130 154
131 155 [[package]]
132 156 name = "either"
133 157 version = "1.5.3"
134 158 source = "registry+https://github.com/rust-lang/crates.io-index"
135 159
136 160 [[package]]
137 161 name = "fuchsia-cprng"
138 162 version = "0.1.1"
139 163 source = "registry+https://github.com/rust-lang/crates.io-index"
140 164
141 165 [[package]]
142 166 name = "getrandom"
143 167 version = "0.1.14"
144 168 source = "registry+https://github.com/rust-lang/crates.io-index"
145 169 dependencies = [
146 170 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
147 171 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
148 172 "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)",
149 173 ]
150 174
151 175 [[package]]
152 176 name = "hermit-abi"
153 177 version = "0.1.6"
154 178 source = "registry+https://github.com/rust-lang/crates.io-index"
155 179 dependencies = [
156 180 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
157 181 ]
158 182
159 183 [[package]]
160 184 name = "hex"
161 185 version = "0.4.0"
162 186 source = "registry+https://github.com/rust-lang/crates.io-index"
163 187
164 188 [[package]]
165 189 name = "hg-core"
166 190 version = "0.1.0"
167 191 dependencies = [
168 192 "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
169 193 "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)",
194 "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
170 195 "hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
171 196 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
172 197 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
173 198 "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
199 "memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
174 200 "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
175 201 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
176 202 "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
177 203 "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
178 204 "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
179 205 "same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
180 206 "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
181 207 "twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
182 208 ]
183 209
184 210 [[package]]
185 211 name = "hg-cpython"
186 212 version = "0.1.0"
187 213 dependencies = [
188 214 "cpython 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
189 215 "hg-core 0.1.0",
190 216 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
191 217 ]
192 218
193 219 [[package]]
194 220 name = "hgdirectffi"
195 221 version = "0.1.0"
196 222 dependencies = [
197 223 "hg-core 0.1.0",
198 224 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
199 225 ]
200 226
201 227 [[package]]
202 228 name = "lazy_static"
203 229 version = "1.4.0"
204 230 source = "registry+https://github.com/rust-lang/crates.io-index"
205 231
206 232 [[package]]
207 233 name = "libc"
208 234 version = "0.2.66"
209 235 source = "registry+https://github.com/rust-lang/crates.io-index"
210 236
211 237 [[package]]
212 238 name = "memchr"
213 239 version = "2.3.0"
214 240 source = "registry+https://github.com/rust-lang/crates.io-index"
215 241
216 242 [[package]]
243 name = "memmap"
244 version = "0.7.0"
245 source = "registry+https://github.com/rust-lang/crates.io-index"
246 dependencies = [
247 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
248 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
249 ]
250
251 [[package]]
217 252 name = "memoffset"
218 253 version = "0.5.3"
219 254 source = "registry+https://github.com/rust-lang/crates.io-index"
220 255 dependencies = [
221 256 "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
222 257 ]
223 258
224 259 [[package]]
225 260 name = "num-traits"
226 261 version = "0.2.11"
227 262 source = "registry+https://github.com/rust-lang/crates.io-index"
228 263 dependencies = [
229 264 "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
230 265 ]
231 266
232 267 [[package]]
233 268 name = "num_cpus"
234 269 version = "1.12.0"
235 270 source = "registry+https://github.com/rust-lang/crates.io-index"
236 271 dependencies = [
237 272 "hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
238 273 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
239 274 ]
240 275
241 276 [[package]]
242 277 name = "output_vt100"
243 278 version = "0.1.2"
244 279 source = "registry+https://github.com/rust-lang/crates.io-index"
245 280 dependencies = [
246 281 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
247 282 ]
248 283
249 284 [[package]]
250 285 name = "ppv-lite86"
251 286 version = "0.2.6"
252 287 source = "registry+https://github.com/rust-lang/crates.io-index"
253 288
254 289 [[package]]
255 290 name = "pretty_assertions"
256 291 version = "0.6.1"
257 292 source = "registry+https://github.com/rust-lang/crates.io-index"
258 293 dependencies = [
259 294 "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
260 295 "ctor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
261 296 "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
262 297 "output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
263 298 ]
264 299
265 300 [[package]]
266 301 name = "proc-macro2"
267 302 version = "1.0.8"
268 303 source = "registry+https://github.com/rust-lang/crates.io-index"
269 304 dependencies = [
270 305 "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
271 306 ]
272 307
273 308 [[package]]
274 309 name = "python27-sys"
275 310 version = "0.4.1"
276 311 source = "registry+https://github.com/rust-lang/crates.io-index"
277 312 dependencies = [
278 313 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
279 314 "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
280 315 ]
281 316
282 317 [[package]]
283 318 name = "python3-sys"
284 319 version = "0.4.1"
285 320 source = "registry+https://github.com/rust-lang/crates.io-index"
286 321 dependencies = [
287 322 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
288 323 "regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
289 324 ]
290 325
291 326 [[package]]
292 327 name = "quote"
293 328 version = "1.0.2"
294 329 source = "registry+https://github.com/rust-lang/crates.io-index"
295 330 dependencies = [
296 331 "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
297 332 ]
298 333
299 334 [[package]]
300 335 name = "rand"
301 336 version = "0.6.5"
302 337 source = "registry+https://github.com/rust-lang/crates.io-index"
303 338 dependencies = [
304 339 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
305 340 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
306 341 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
307 342 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
308 343 "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
309 344 "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
310 345 "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
311 346 "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
312 347 "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
313 348 "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
314 349 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
315 350 ]
316 351
317 352 [[package]]
318 353 name = "rand"
319 354 version = "0.7.3"
320 355 source = "registry+https://github.com/rust-lang/crates.io-index"
321 356 dependencies = [
322 357 "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
323 358 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
324 359 "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
325 360 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
326 361 "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
327 362 ]
328 363
329 364 [[package]]
330 365 name = "rand_chacha"
331 366 version = "0.1.1"
332 367 source = "registry+https://github.com/rust-lang/crates.io-index"
333 368 dependencies = [
334 369 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
335 370 "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
336 371 ]
337 372
338 373 [[package]]
339 374 name = "rand_chacha"
340 375 version = "0.2.1"
341 376 source = "registry+https://github.com/rust-lang/crates.io-index"
342 377 dependencies = [
343 378 "c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
344 379 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
345 380 ]
346 381
347 382 [[package]]
348 383 name = "rand_core"
349 384 version = "0.3.1"
350 385 source = "registry+https://github.com/rust-lang/crates.io-index"
351 386 dependencies = [
352 387 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
353 388 ]
354 389
355 390 [[package]]
356 391 name = "rand_core"
357 392 version = "0.4.2"
358 393 source = "registry+https://github.com/rust-lang/crates.io-index"
359 394
360 395 [[package]]
361 396 name = "rand_core"
362 397 version = "0.5.1"
363 398 source = "registry+https://github.com/rust-lang/crates.io-index"
364 399 dependencies = [
365 400 "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
366 401 ]
367 402
368 403 [[package]]
369 404 name = "rand_hc"
370 405 version = "0.1.0"
371 406 source = "registry+https://github.com/rust-lang/crates.io-index"
372 407 dependencies = [
373 408 "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
374 409 ]
375 410
376 411 [[package]]
377 412 name = "rand_hc"
378 413 version = "0.2.0"
379 414 source = "registry+https://github.com/rust-lang/crates.io-index"
380 415 dependencies = [
381 416 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
382 417 ]
383 418
384 419 [[package]]
385 420 name = "rand_isaac"
386 421 version = "0.1.1"
387 422 source = "registry+https://github.com/rust-lang/crates.io-index"
388 423 dependencies = [
389 424 "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
390 425 ]
391 426
392 427 [[package]]
393 428 name = "rand_jitter"
394 429 version = "0.1.4"
395 430 source = "registry+https://github.com/rust-lang/crates.io-index"
396 431 dependencies = [
397 432 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
398 433 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
399 434 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
400 435 ]
401 436
402 437 [[package]]
403 438 name = "rand_os"
404 439 version = "0.1.3"
405 440 source = "registry+https://github.com/rust-lang/crates.io-index"
406 441 dependencies = [
407 442 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
408 443 "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
409 444 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
410 445 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
411 446 "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
412 447 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
413 448 ]
414 449
415 450 [[package]]
416 451 name = "rand_pcg"
417 452 version = "0.1.2"
418 453 source = "registry+https://github.com/rust-lang/crates.io-index"
419 454 dependencies = [
420 455 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
421 456 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
422 457 ]
423 458
424 459 [[package]]
425 460 name = "rand_xorshift"
426 461 version = "0.1.1"
427 462 source = "registry+https://github.com/rust-lang/crates.io-index"
428 463 dependencies = [
429 464 "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
430 465 ]
431 466
432 467 [[package]]
433 468 name = "rayon"
434 469 version = "1.3.0"
435 470 source = "registry+https://github.com/rust-lang/crates.io-index"
436 471 dependencies = [
437 472 "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
438 473 "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
439 474 "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
440 475 ]
441 476
442 477 [[package]]
443 478 name = "rayon-core"
444 479 version = "1.7.0"
445 480 source = "registry+https://github.com/rust-lang/crates.io-index"
446 481 dependencies = [
447 482 "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
448 483 "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
449 484 "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
450 485 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
451 486 "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
452 487 ]
453 488
454 489 [[package]]
455 490 name = "rdrand"
456 491 version = "0.4.0"
457 492 source = "registry+https://github.com/rust-lang/crates.io-index"
458 493 dependencies = [
459 494 "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
460 495 ]
461 496
462 497 [[package]]
463 498 name = "redox_syscall"
464 499 version = "0.1.56"
465 500 source = "registry+https://github.com/rust-lang/crates.io-index"
466 501
467 502 [[package]]
468 503 name = "regex"
469 504 version = "1.3.4"
470 505 source = "registry+https://github.com/rust-lang/crates.io-index"
471 506 dependencies = [
472 507 "aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
473 508 "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
474 509 "regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)",
475 510 "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
476 511 ]
477 512
478 513 [[package]]
479 514 name = "regex-syntax"
480 515 version = "0.6.14"
481 516 source = "registry+https://github.com/rust-lang/crates.io-index"
482 517
483 518 [[package]]
484 519 name = "remove_dir_all"
485 520 version = "0.5.2"
486 521 source = "registry+https://github.com/rust-lang/crates.io-index"
487 522 dependencies = [
488 523 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
489 524 ]
490 525
491 526 [[package]]
492 527 name = "rustc_version"
493 528 version = "0.2.3"
494 529 source = "registry+https://github.com/rust-lang/crates.io-index"
495 530 dependencies = [
496 531 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
497 532 ]
498 533
499 534 [[package]]
500 535 name = "same-file"
501 536 version = "1.0.6"
502 537 source = "registry+https://github.com/rust-lang/crates.io-index"
503 538 dependencies = [
504 539 "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
505 540 ]
506 541
507 542 [[package]]
508 543 name = "scopeguard"
509 544 version = "1.0.0"
510 545 source = "registry+https://github.com/rust-lang/crates.io-index"
511 546
512 547 [[package]]
513 548 name = "semver"
514 549 version = "0.9.0"
515 550 source = "registry+https://github.com/rust-lang/crates.io-index"
516 551 dependencies = [
517 552 "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
518 553 ]
519 554
520 555 [[package]]
521 556 name = "semver-parser"
522 557 version = "0.7.0"
523 558 source = "registry+https://github.com/rust-lang/crates.io-index"
524 559
525 560 [[package]]
561 name = "strsim"
562 version = "0.8.0"
563 source = "registry+https://github.com/rust-lang/crates.io-index"
564
565 [[package]]
526 566 name = "syn"
527 567 version = "1.0.14"
528 568 source = "registry+https://github.com/rust-lang/crates.io-index"
529 569 dependencies = [
530 570 "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
531 571 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
532 572 "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
533 573 ]
534 574
535 575 [[package]]
536 576 name = "tempfile"
537 577 version = "3.1.0"
538 578 source = "registry+https://github.com/rust-lang/crates.io-index"
539 579 dependencies = [
540 580 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
541 581 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
542 582 "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
543 583 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
544 584 "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
545 585 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
546 586 ]
547 587
548 588 [[package]]
589 name = "textwrap"
590 version = "0.11.0"
591 source = "registry+https://github.com/rust-lang/crates.io-index"
592 dependencies = [
593 "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
594 ]
595
596 [[package]]
549 597 name = "thread_local"
550 598 version = "1.0.1"
551 599 source = "registry+https://github.com/rust-lang/crates.io-index"
552 600 dependencies = [
553 601 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
554 602 ]
555 603
556 604 [[package]]
557 605 name = "twox-hash"
558 606 version = "1.5.0"
559 607 source = "registry+https://github.com/rust-lang/crates.io-index"
560 608 dependencies = [
561 609 "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
562 610 ]
563 611
564 612 [[package]]
613 name = "unicode-width"
614 version = "0.1.7"
615 source = "registry+https://github.com/rust-lang/crates.io-index"
616
617 [[package]]
565 618 name = "unicode-xid"
566 619 version = "0.2.0"
567 620 source = "registry+https://github.com/rust-lang/crates.io-index"
568 621
569 622 [[package]]
623 name = "vec_map"
624 version = "0.8.1"
625 source = "registry+https://github.com/rust-lang/crates.io-index"
626
627 [[package]]
570 628 name = "wasi"
571 629 version = "0.9.0+wasi-snapshot-preview1"
572 630 source = "registry+https://github.com/rust-lang/crates.io-index"
573 631
574 632 [[package]]
575 633 name = "winapi"
576 634 version = "0.3.8"
577 635 source = "registry+https://github.com/rust-lang/crates.io-index"
578 636 dependencies = [
579 637 "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
580 638 "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
581 639 ]
582 640
583 641 [[package]]
584 642 name = "winapi-i686-pc-windows-gnu"
585 643 version = "0.4.0"
586 644 source = "registry+https://github.com/rust-lang/crates.io-index"
587 645
588 646 [[package]]
589 647 name = "winapi-util"
590 648 version = "0.1.3"
591 649 source = "registry+https://github.com/rust-lang/crates.io-index"
592 650 dependencies = [
593 651 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
594 652 ]
595 653
596 654 [[package]]
597 655 name = "winapi-x86_64-pc-windows-gnu"
598 656 version = "0.4.0"
599 657 source = "registry+https://github.com/rust-lang/crates.io-index"
600 658
601 659 [metadata]
602 660 "checksum aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811"
603 661 "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
662 "checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
604 663 "checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
605 664 "checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
606 665 "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
607 666 "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
608 667 "checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb"
609 668 "checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
610 669 "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
670 "checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
611 671 "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
612 672 "checksum cpython 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bfaf3847ab963e40c4f6dd8d6be279bdf74007ae2413786a0dcbb28c52139a95"
613 673 "checksum crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca"
614 674 "checksum crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac"
615 675 "checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db"
616 676 "checksum crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4"
617 677 "checksum ctor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8ce37ad4184ab2ce004c33bf6379185d3b1c95801cab51026bd271bf68eedc"
618 678 "checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
619 679 "checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
620 680 "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
621 681 "checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
622 682 "checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772"
623 683 "checksum hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "023b39be39e3a2da62a94feb433e91e8bcd37676fbc8bea371daf52b7a769a3e"
624 684 "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
625 685 "checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
626 686 "checksum memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223"
687 "checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
627 688 "checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9"
628 689 "checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096"
629 690 "checksum num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6"
630 691 "checksum output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9"
631 692 "checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b"
632 693 "checksum pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427"
633 694 "checksum proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548"
634 695 "checksum python27-sys 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "67cb041de8615111bf224dd75667af5f25c6e032118251426fed7f1b70ce4c8c"
635 696 "checksum python3-sys 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90af11779515a1e530af60782d273b59ac79d33b0e253c071a728563957c76d4"
636 697 "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
637 698 "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
638 699 "checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
639 700 "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
640 701 "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
641 702 "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
642 703 "checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
643 704 "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
644 705 "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
645 706 "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
646 707 "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
647 708 "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
648 709 "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
649 710 "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
650 711 "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
651 712 "checksum rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098"
652 713 "checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9"
653 714 "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
654 715 "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
655 716 "checksum regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8"
656 717 "checksum regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06"
657 718 "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
658 719 "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
659 720 "checksum same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
660 721 "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
661 722 "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
662 723 "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
724 "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
663 725 "checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5"
664 726 "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
727 "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
665 728 "checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
666 729 "checksum twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56"
730 "checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
667 731 "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
732 "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
668 733 "checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
669 734 "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
670 735 "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
671 736 "checksum winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80"
672 737 "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
@@ -1,34 +1,36 b''
1 1 [package]
2 2 name = "hg-core"
3 3 version = "0.1.0"
4 4 authors = ["Georges Racinet <gracinet@anybox.fr>"]
5 5 description = "Mercurial pure Rust core library, with no assumption on Python bindings (FFI)"
6 6 edition = "2018"
7 7 build = "build.rs"
8 8
9 9 [lib]
10 10 name = "hg"
11 11
12 12 [dependencies]
13 13 byteorder = "1.3.1"
14 14 hex = "0.4.0"
15 15 lazy_static = "1.3.0"
16 16 libc = { version = "0.2.66", optional = true }
17 17 memchr = "2.2.0"
18 18 rand = "0.6.5"
19 19 rand_pcg = "0.1.1"
20 20 rayon = "1.3.0"
21 21 regex = "1.1.0"
22 22 twox-hash = "1.5.0"
23 23 same-file = "1.0.6"
24 24
25 25 [dev-dependencies]
26 clap = "*"
27 memmap = "0.7.0"
28 pretty_assertions = "0.6.1"
26 29 tempfile = "3.1.0"
27 pretty_assertions = "0.6.1"
28 30
29 31 [build-dependencies]
30 32 cc = { version = "1.0.48", optional = true }
31 33
32 34 [features]
33 35 default = []
34 36 with-re2 = ["cc", "libc"]
General Comments 0
You need to be logged in to leave comments. Login now