aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkshay <[email protected]>2020-08-22 16:46:26 +0100
committerAkshay <[email protected]>2020-08-22 16:46:26 +0100
commit70eeba1f481d625db311ea4d961453d3e1b90ea7 (patch)
treeded265527d9d9d1c9978b69bfd7b84a7717f807f
parent9e684bc6100b5db438108f78eea1c11155a47092 (diff)
init
-rw-r--r--Cargo.lock999
-rw-r--r--Cargo.nix2664
-rw-r--r--Cargo.toml16
-rw-r--r--default.nix4
-rw-r--r--nix/nixpkgs.nix27
-rw-r--r--nix/sources.json50
-rw-r--r--nix/sources.nix134
-rw-r--r--shell.nix15
-rw-r--r--src/main.rs97
9 files changed, 4006 insertions, 0 deletions
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000..74c1be3
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,999 @@
1# This file is automatically @generated by Cargo.
2# It is not intended for manual editing.
3[[package]]
4name = "aho-corasick"
5version = "0.7.13"
6source = "registry+https://github.com/rust-lang/crates.io-index"
7checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86"
8dependencies = [
9 "memchr",
10]
11
12[[package]]
13name = "arc-swap"
14version = "0.4.7"
15source = "registry+https://github.com/rust-lang/crates.io-index"
16checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034"
17
18[[package]]
19name = "atty"
20version = "0.2.14"
21source = "registry+https://github.com/rust-lang/crates.io-index"
22checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
23dependencies = [
24 "hermit-abi",
25 "libc",
26 "winapi 0.3.9",
27]
28
29[[package]]
30name = "autocfg"
31version = "0.1.7"
32source = "registry+https://github.com/rust-lang/crates.io-index"
33checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
34
35[[package]]
36name = "autocfg"
37version = "1.0.1"
38source = "registry+https://github.com/rust-lang/crates.io-index"
39checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
40
41[[package]]
42name = "bitflags"
43version = "1.2.1"
44source = "registry+https://github.com/rust-lang/crates.io-index"
45checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
46
47[[package]]
48name = "bytes"
49version = "0.5.6"
50source = "registry+https://github.com/rust-lang/crates.io-index"
51checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
52
53[[package]]
54name = "cfg-if"
55version = "0.1.10"
56source = "registry+https://github.com/rust-lang/crates.io-index"
57checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
58
59[[package]]
60name = "cloudabi"
61version = "0.0.3"
62source = "registry+https://github.com/rust-lang/crates.io-index"
63checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
64dependencies = [
65 "bitflags",
66]
67
68[[package]]
69name = "env_logger"
70version = "0.7.1"
71source = "registry+https://github.com/rust-lang/crates.io-index"
72checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
73dependencies = [
74 "atty",
75 "humantime",
76 "log",
77 "regex",
78 "termcolor",
79]
80
81[[package]]
82name = "fallible-iterator"
83version = "0.2.0"
84source = "registry+https://github.com/rust-lang/crates.io-index"
85checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
86
87[[package]]
88name = "fallible-streaming-iterator"
89version = "0.1.9"
90source = "registry+https://github.com/rust-lang/crates.io-index"
91checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
92
93[[package]]
94name = "fnv"
95version = "1.0.7"
96source = "registry+https://github.com/rust-lang/crates.io-index"
97checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
98
99[[package]]
100name = "fuchsia-cprng"
101version = "0.1.1"
102source = "registry+https://github.com/rust-lang/crates.io-index"
103checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
104
105[[package]]
106name = "fuchsia-zircon"
107version = "0.3.3"
108source = "registry+https://github.com/rust-lang/crates.io-index"
109checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
110dependencies = [
111 "bitflags",
112 "fuchsia-zircon-sys",
113]
114
115[[package]]
116name = "fuchsia-zircon-sys"
117version = "0.3.3"
118source = "registry+https://github.com/rust-lang/crates.io-index"
119checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
120
121[[package]]
122name = "futures-channel"
123version = "0.3.5"
124source = "registry+https://github.com/rust-lang/crates.io-index"
125checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5"
126dependencies = [
127 "futures-core",
128]
129
130[[package]]
131name = "futures-core"
132version = "0.3.5"
133source = "registry+https://github.com/rust-lang/crates.io-index"
134checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399"
135
136[[package]]
137name = "futures-macro"
138version = "0.3.5"
139source = "registry+https://github.com/rust-lang/crates.io-index"
140checksum = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39"
141dependencies = [
142 "proc-macro-hack",
143 "proc-macro2",
144 "quote",
145 "syn",
146]
147
148[[package]]
149name = "futures-sink"
150version = "0.3.5"
151source = "registry+https://github.com/rust-lang/crates.io-index"
152checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc"
153
154[[package]]
155name = "futures-task"
156version = "0.3.5"
157source = "registry+https://github.com/rust-lang/crates.io-index"
158checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626"
159dependencies = [
160 "once_cell",
161]
162
163[[package]]
164name = "futures-util"
165version = "0.3.5"
166source = "registry+https://github.com/rust-lang/crates.io-index"
167checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6"
168dependencies = [
169 "futures-core",
170 "futures-macro",
171 "futures-task",
172 "pin-project",
173 "pin-utils",
174 "proc-macro-hack",
175 "proc-macro-nested",
176 "slab",
177]
178
179[[package]]
180name = "h2"
181version = "0.2.6"
182source = "registry+https://github.com/rust-lang/crates.io-index"
183checksum = "993f9e0baeed60001cf565546b0d3dbe6a6ad23f2bd31644a133c641eccf6d53"
184dependencies = [
185 "bytes",
186 "fnv",
187 "futures-core",
188 "futures-sink",
189 "futures-util",
190 "http",
191 "indexmap",
192 "slab",
193 "tokio",
194 "tokio-util",
195 "tracing",
196]
197
198[[package]]
199name = "hashbrown"
200version = "0.8.2"
201source = "registry+https://github.com/rust-lang/crates.io-index"
202checksum = "e91b62f79061a0bc2e046024cb7ba44b08419ed238ecbd9adbd787434b9e8c25"
203dependencies = [
204 "autocfg 1.0.1",
205]
206
207[[package]]
208name = "hedge"
209version = "0.1.0"
210dependencies = [
211 "futures-util",
212 "hyper",
213 "nanoid",
214 "pretty_env_logger",
215 "rusqlite",
216 "tokio",
217 "url",
218]
219
220[[package]]
221name = "hermit-abi"
222version = "0.1.15"
223source = "registry+https://github.com/rust-lang/crates.io-index"
224checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9"
225dependencies = [
226 "libc",
227]
228
229[[package]]
230name = "http"
231version = "0.2.1"
232source = "registry+https://github.com/rust-lang/crates.io-index"
233checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9"
234dependencies = [
235 "bytes",
236 "fnv",
237 "itoa",
238]
239
240[[package]]
241name = "http-body"
242version = "0.3.1"
243source = "registry+https://github.com/rust-lang/crates.io-index"
244checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"
245dependencies = [
246 "bytes",
247 "http",
248]
249
250[[package]]
251name = "httparse"
252version = "1.3.4"
253source = "registry+https://github.com/rust-lang/crates.io-index"
254checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
255
256[[package]]
257name = "humantime"
258version = "1.3.0"
259source = "registry+https://github.com/rust-lang/crates.io-index"
260checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
261dependencies = [
262 "quick-error",
263]
264
265[[package]]
266name = "hyper"
267version = "0.13.7"
268source = "registry+https://github.com/rust-lang/crates.io-index"
269checksum = "3e68a8dd9716185d9e64ea473ea6ef63529252e3e27623295a0378a19665d5eb"
270dependencies = [
271 "bytes",
272 "futures-channel",
273 "futures-core",
274 "futures-util",
275 "h2",
276 "http",
277 "http-body",
278 "httparse",
279 "itoa",
280 "pin-project",
281 "socket2",
282 "time",
283 "tokio",
284 "tower-service",
285 "tracing",
286 "want",
287]
288
289[[package]]
290name = "idna"
291version = "0.2.0"
292source = "registry+https://github.com/rust-lang/crates.io-index"
293checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
294dependencies = [
295 "matches",
296 "unicode-bidi",
297 "unicode-normalization",
298]
299
300[[package]]
301name = "indexmap"
302version = "1.5.1"
303source = "registry+https://github.com/rust-lang/crates.io-index"
304checksum = "86b45e59b16c76b11bf9738fd5d38879d3bd28ad292d7b313608becb17ae2df9"
305dependencies = [
306 "autocfg 1.0.1",
307 "hashbrown",
308]
309
310[[package]]
311name = "iovec"
312version = "0.1.4"
313source = "registry+https://github.com/rust-lang/crates.io-index"
314checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
315dependencies = [
316 "libc",
317]
318
319[[package]]
320name = "itoa"
321version = "0.4.6"
322source = "registry+https://github.com/rust-lang/crates.io-index"
323checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"
324
325[[package]]
326name = "kernel32-sys"
327version = "0.2.2"
328source = "registry+https://github.com/rust-lang/crates.io-index"
329checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
330dependencies = [
331 "winapi 0.2.8",
332 "winapi-build",
333]
334
335[[package]]
336name = "lazy_static"
337version = "1.4.0"
338source = "registry+https://github.com/rust-lang/crates.io-index"
339checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
340
341[[package]]
342name = "libc"
343version = "0.2.76"
344source = "registry+https://github.com/rust-lang/crates.io-index"
345checksum = "755456fae044e6fa1ebbbd1b3e902ae19e73097ed4ed87bb79934a867c007bc3"
346
347[[package]]
348name = "libsqlite3-sys"
349version = "0.20.0"
350source = "registry+https://github.com/rust-lang/crates.io-index"
351checksum = "e3a245984b1b06c291f46e27ebda9f369a94a1ab8461d0e845e23f9ced01f5db"
352dependencies = [
353 "pkg-config",
354 "vcpkg",
355]
356
357[[package]]
358name = "linked-hash-map"
359version = "0.5.3"
360source = "registry+https://github.com/rust-lang/crates.io-index"
361checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a"
362
363[[package]]
364name = "log"
365version = "0.4.11"
366source = "registry+https://github.com/rust-lang/crates.io-index"
367checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
368dependencies = [
369 "cfg-if",
370]
371
372[[package]]
373name = "lru-cache"
374version = "0.1.2"
375source = "registry+https://github.com/rust-lang/crates.io-index"
376checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
377dependencies = [
378 "linked-hash-map",
379]
380
381[[package]]
382name = "matches"
383version = "0.1.8"
384source = "registry+https://github.com/rust-lang/crates.io-index"
385checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
386
387[[package]]
388name = "memchr"
389version = "2.3.3"
390source = "registry+https://github.com/rust-lang/crates.io-index"
391checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
392
393[[package]]
394name = "mio"
395version = "0.6.22"
396source = "registry+https://github.com/rust-lang/crates.io-index"
397checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430"
398dependencies = [
399 "cfg-if",
400 "fuchsia-zircon",
401 "fuchsia-zircon-sys",
402 "iovec",
403 "kernel32-sys",
404 "libc",
405 "log",
406 "miow 0.2.1",
407 "net2",
408 "slab",
409 "winapi 0.2.8",
410]
411
412[[package]]
413name = "mio-named-pipes"
414version = "0.1.7"
415source = "registry+https://github.com/rust-lang/crates.io-index"
416checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656"
417dependencies = [
418 "log",
419 "mio",
420 "miow 0.3.5",
421 "winapi 0.3.9",
422]
423
424[[package]]
425name = "mio-uds"
426version = "0.6.8"
427source = "registry+https://github.com/rust-lang/crates.io-index"
428checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0"
429dependencies = [
430 "iovec",
431 "libc",
432 "mio",
433]
434
435[[package]]
436name = "miow"
437version = "0.2.1"
438source = "registry+https://github.com/rust-lang/crates.io-index"
439checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
440dependencies = [
441 "kernel32-sys",
442 "net2",
443 "winapi 0.2.8",
444 "ws2_32-sys",
445]
446
447[[package]]
448name = "miow"
449version = "0.3.5"
450source = "registry+https://github.com/rust-lang/crates.io-index"
451checksum = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e"
452dependencies = [
453 "socket2",
454 "winapi 0.3.9",
455]
456
457[[package]]
458name = "nanoid"
459version = "0.3.0"
460source = "registry+https://github.com/rust-lang/crates.io-index"
461checksum = "a6226bc4e142124cb44e309a37a04cd9bb10e740d8642855441d3b14808f635e"
462dependencies = [
463 "rand",
464]
465
466[[package]]
467name = "net2"
468version = "0.2.34"
469source = "registry+https://github.com/rust-lang/crates.io-index"
470checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7"
471dependencies = [
472 "cfg-if",
473 "libc",
474 "winapi 0.3.9",
475]
476
477[[package]]
478name = "num_cpus"
479version = "1.13.0"
480source = "registry+https://github.com/rust-lang/crates.io-index"
481checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
482dependencies = [
483 "hermit-abi",
484 "libc",
485]
486
487[[package]]
488name = "once_cell"
489version = "1.4.1"
490source = "registry+https://github.com/rust-lang/crates.io-index"
491checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad"
492
493[[package]]
494name = "percent-encoding"
495version = "2.1.0"
496source = "registry+https://github.com/rust-lang/crates.io-index"
497checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
498
499[[package]]
500name = "pin-project"
501version = "0.4.23"
502source = "registry+https://github.com/rust-lang/crates.io-index"
503checksum = "ca4433fff2ae79342e497d9f8ee990d174071408f28f726d6d83af93e58e48aa"
504dependencies = [
505 "pin-project-internal",
506]
507
508[[package]]
509name = "pin-project-internal"
510version = "0.4.23"
511source = "registry+https://github.com/rust-lang/crates.io-index"
512checksum = "2c0e815c3ee9a031fdf5af21c10aa17c573c9c6a566328d99e3936c34e36461f"
513dependencies = [
514 "proc-macro2",
515 "quote",
516 "syn",
517]
518
519[[package]]
520name = "pin-project-lite"
521version = "0.1.7"
522source = "registry+https://github.com/rust-lang/crates.io-index"
523checksum = "282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715"
524
525[[package]]
526name = "pin-utils"
527version = "0.1.0"
528source = "registry+https://github.com/rust-lang/crates.io-index"
529checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
530
531[[package]]
532name = "pkg-config"
533version = "0.3.18"
534source = "registry+https://github.com/rust-lang/crates.io-index"
535checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33"
536
537[[package]]
538name = "pretty_env_logger"
539version = "0.4.0"
540source = "registry+https://github.com/rust-lang/crates.io-index"
541checksum = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d"
542dependencies = [
543 "env_logger",
544 "log",
545]
546
547[[package]]
548name = "proc-macro-hack"
549version = "0.5.18"
550source = "registry+https://github.com/rust-lang/crates.io-index"
551checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598"
552
553[[package]]
554name = "proc-macro-nested"
555version = "0.1.6"
556source = "registry+https://github.com/rust-lang/crates.io-index"
557checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a"
558
559[[package]]
560name = "proc-macro2"
561version = "1.0.19"
562source = "registry+https://github.com/rust-lang/crates.io-index"
563checksum = "04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12"
564dependencies = [
565 "unicode-xid",
566]
567
568[[package]]
569name = "quick-error"
570version = "1.2.3"
571source = "registry+https://github.com/rust-lang/crates.io-index"
572checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
573
574[[package]]
575name = "quote"
576version = "1.0.7"
577source = "registry+https://github.com/rust-lang/crates.io-index"
578checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
579dependencies = [
580 "proc-macro2",
581]
582
583[[package]]
584name = "rand"
585version = "0.6.5"
586source = "registry+https://github.com/rust-lang/crates.io-index"
587checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
588dependencies = [
589 "autocfg 0.1.7",
590 "libc",
591 "rand_chacha",
592 "rand_core 0.4.2",
593 "rand_hc",
594 "rand_isaac",
595 "rand_jitter",
596 "rand_os",
597 "rand_pcg",
598 "rand_xorshift",
599 "winapi 0.3.9",
600]
601
602[[package]]
603name = "rand_chacha"
604version = "0.1.1"
605source = "registry+https://github.com/rust-lang/crates.io-index"
606checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
607dependencies = [
608 "autocfg 0.1.7",
609 "rand_core 0.3.1",
610]
611
612[[package]]
613name = "rand_core"
614version = "0.3.1"
615source = "registry+https://github.com/rust-lang/crates.io-index"
616checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
617dependencies = [
618 "rand_core 0.4.2",
619]
620
621[[package]]
622name = "rand_core"
623version = "0.4.2"
624source = "registry+https://github.com/rust-lang/crates.io-index"
625checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
626
627[[package]]
628name = "rand_hc"
629version = "0.1.0"
630source = "registry+https://github.com/rust-lang/crates.io-index"
631checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
632dependencies = [
633 "rand_core 0.3.1",
634]
635
636[[package]]
637name = "rand_isaac"
638version = "0.1.1"
639source = "registry+https://github.com/rust-lang/crates.io-index"
640checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
641dependencies = [
642 "rand_core 0.3.1",
643]
644
645[[package]]
646name = "rand_jitter"
647version = "0.1.4"
648source = "registry+https://github.com/rust-lang/crates.io-index"
649checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
650dependencies = [
651 "libc",
652 "rand_core 0.4.2",
653 "winapi 0.3.9",
654]
655
656[[package]]
657name = "rand_os"
658version = "0.1.3"
659source = "registry+https://github.com/rust-lang/crates.io-index"
660checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
661dependencies = [
662 "cloudabi",
663 "fuchsia-cprng",
664 "libc",
665 "rand_core 0.4.2",
666 "rdrand",
667 "winapi 0.3.9",
668]
669
670[[package]]
671name = "rand_pcg"
672version = "0.1.2"
673source = "registry+https://github.com/rust-lang/crates.io-index"
674checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
675dependencies = [
676 "autocfg 0.1.7",
677 "rand_core 0.4.2",
678]
679
680[[package]]
681name = "rand_xorshift"
682version = "0.1.1"
683source = "registry+https://github.com/rust-lang/crates.io-index"
684checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
685dependencies = [
686 "rand_core 0.3.1",
687]
688
689[[package]]
690name = "rdrand"
691version = "0.4.0"
692source = "registry+https://github.com/rust-lang/crates.io-index"
693checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
694dependencies = [
695 "rand_core 0.3.1",
696]
697
698[[package]]
699name = "redox_syscall"
700version = "0.1.57"
701source = "registry+https://github.com/rust-lang/crates.io-index"
702checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
703
704[[package]]
705name = "regex"
706version = "1.3.9"
707source = "registry+https://github.com/rust-lang/crates.io-index"
708checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6"
709dependencies = [
710 "aho-corasick",
711 "memchr",
712 "regex-syntax",
713 "thread_local",
714]
715
716[[package]]
717name = "regex-syntax"
718version = "0.6.18"
719source = "registry+https://github.com/rust-lang/crates.io-index"
720checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8"
721
722[[package]]
723name = "rusqlite"
724version = "0.24.0"
725source = "registry+https://github.com/rust-lang/crates.io-index"
726checksum = "4c78c3275d9d6eb684d2db4b2388546b32fdae0586c20a82f3905d21ea78b9ef"
727dependencies = [
728 "bitflags",
729 "fallible-iterator",
730 "fallible-streaming-iterator",
731 "libsqlite3-sys",
732 "lru-cache",
733 "memchr",
734 "smallvec",
735]
736
737[[package]]
738name = "signal-hook-registry"
739version = "1.2.1"
740source = "registry+https://github.com/rust-lang/crates.io-index"
741checksum = "a3e12110bc539e657a646068aaf5eb5b63af9d0c1f7b29c97113fad80e15f035"
742dependencies = [
743 "arc-swap",
744 "libc",
745]
746
747[[package]]
748name = "slab"
749version = "0.4.2"
750source = "registry+https://github.com/rust-lang/crates.io-index"
751checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
752
753[[package]]
754name = "smallvec"
755version = "1.4.2"
756source = "registry+https://github.com/rust-lang/crates.io-index"
757checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252"
758
759[[package]]
760name = "socket2"
761version = "0.3.12"
762source = "registry+https://github.com/rust-lang/crates.io-index"
763checksum = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918"
764dependencies = [
765 "cfg-if",
766 "libc",
767 "redox_syscall",
768 "winapi 0.3.9",
769]
770
771[[package]]
772name = "syn"
773version = "1.0.39"
774source = "registry+https://github.com/rust-lang/crates.io-index"
775checksum = "891d8d6567fe7c7f8835a3a98af4208f3846fba258c1bc3c31d6e506239f11f9"
776dependencies = [
777 "proc-macro2",
778 "quote",
779 "unicode-xid",
780]
781
782[[package]]
783name = "termcolor"
784version = "1.1.0"
785source = "registry+https://github.com/rust-lang/crates.io-index"
786checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"
787dependencies = [
788 "winapi-util",
789]
790
791[[package]]
792name = "thread_local"
793version = "1.0.1"
794source = "registry+https://github.com/rust-lang/crates.io-index"
795checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
796dependencies = [
797 "lazy_static",
798]
799
800[[package]]
801name = "time"
802version = "0.1.43"
803source = "registry+https://github.com/rust-lang/crates.io-index"
804checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
805dependencies = [
806 "libc",
807 "winapi 0.3.9",
808]
809
810[[package]]
811name = "tinyvec"
812version = "0.3.4"
813source = "registry+https://github.com/rust-lang/crates.io-index"
814checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117"
815
816[[package]]
817name = "tokio"
818version = "0.2.22"
819source = "registry+https://github.com/rust-lang/crates.io-index"
820checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd"
821dependencies = [
822 "bytes",
823 "fnv",
824 "futures-core",
825 "iovec",
826 "lazy_static",
827 "libc",
828 "memchr",
829 "mio",
830 "mio-named-pipes",
831 "mio-uds",
832 "num_cpus",
833 "pin-project-lite",
834 "signal-hook-registry",
835 "slab",
836 "tokio-macros",
837 "winapi 0.3.9",
838]
839
840[[package]]
841name = "tokio-macros"
842version = "0.2.5"
843source = "registry+https://github.com/rust-lang/crates.io-index"
844checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389"
845dependencies = [
846 "proc-macro2",
847 "quote",
848 "syn",
849]
850
851[[package]]
852name = "tokio-util"
853version = "0.3.1"
854source = "registry+https://github.com/rust-lang/crates.io-index"
855checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499"
856dependencies = [
857 "bytes",
858 "futures-core",
859 "futures-sink",
860 "log",
861 "pin-project-lite",
862 "tokio",
863]
864
865[[package]]
866name = "tower-service"
867version = "0.3.0"
868source = "registry+https://github.com/rust-lang/crates.io-index"
869checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860"
870
871[[package]]
872name = "tracing"
873version = "0.1.19"
874source = "registry+https://github.com/rust-lang/crates.io-index"
875checksum = "6d79ca061b032d6ce30c660fded31189ca0b9922bf483cd70759f13a2d86786c"
876dependencies = [
877 "cfg-if",
878 "log",
879 "tracing-core",
880]
881
882[[package]]
883name = "tracing-core"
884version = "0.1.14"
885source = "registry+https://github.com/rust-lang/crates.io-index"
886checksum = "db63662723c316b43ca36d833707cc93dff82a02ba3d7e354f342682cc8b3545"
887dependencies = [
888 "lazy_static",
889]
890
891[[package]]
892name = "try-lock"
893version = "0.2.3"
894source = "registry+https://github.com/rust-lang/crates.io-index"
895checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
896
897[[package]]
898name = "unicode-bidi"
899version = "0.3.4"
900source = "registry+https://github.com/rust-lang/crates.io-index"
901checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
902dependencies = [
903 "matches",
904]
905
906[[package]]
907name = "unicode-normalization"
908version = "0.1.13"
909source = "registry+https://github.com/rust-lang/crates.io-index"
910checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"
911dependencies = [
912 "tinyvec",
913]
914
915[[package]]
916name = "unicode-xid"
917version = "0.2.1"
918source = "registry+https://github.com/rust-lang/crates.io-index"
919checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
920
921[[package]]
922name = "url"
923version = "2.1.1"
924source = "registry+https://github.com/rust-lang/crates.io-index"
925checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb"
926dependencies = [
927 "idna",
928 "matches",
929 "percent-encoding",
930]
931
932[[package]]
933name = "vcpkg"
934version = "0.2.10"
935source = "registry+https://github.com/rust-lang/crates.io-index"
936checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c"
937
938[[package]]
939name = "want"
940version = "0.3.0"
941source = "registry+https://github.com/rust-lang/crates.io-index"
942checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
943dependencies = [
944 "log",
945 "try-lock",
946]
947
948[[package]]
949name = "winapi"
950version = "0.2.8"
951source = "registry+https://github.com/rust-lang/crates.io-index"
952checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
953
954[[package]]
955name = "winapi"
956version = "0.3.9"
957source = "registry+https://github.com/rust-lang/crates.io-index"
958checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
959dependencies = [
960 "winapi-i686-pc-windows-gnu",
961 "winapi-x86_64-pc-windows-gnu",
962]
963
964[[package]]
965name = "winapi-build"
966version = "0.1.1"
967source = "registry+https://github.com/rust-lang/crates.io-index"
968checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
969
970[[package]]
971name = "winapi-i686-pc-windows-gnu"
972version = "0.4.0"
973source = "registry+https://github.com/rust-lang/crates.io-index"
974checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
975
976[[package]]
977name = "winapi-util"
978version = "0.1.5"
979source = "registry+https://github.com/rust-lang/crates.io-index"
980checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
981dependencies = [
982 "winapi 0.3.9",
983]
984
985[[package]]
986name = "winapi-x86_64-pc-windows-gnu"
987version = "0.4.0"
988source = "registry+https://github.com/rust-lang/crates.io-index"
989checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
990
991[[package]]
992name = "ws2_32-sys"
993version = "0.2.1"
994source = "registry+https://github.com/rust-lang/crates.io-index"
995checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
996dependencies = [
997 "winapi 0.2.8",
998 "winapi-build",
999]
diff --git a/Cargo.nix b/Cargo.nix
new file mode 100644
index 0000000..0d06dc6
--- /dev/null
+++ b/Cargo.nix
@@ -0,0 +1,2664 @@
1
2# This file was @generated by crate2nix 0.8.0 with the command:
3# "generate"
4# See https://github.com/kolloch/crate2nix for more info.
5
6{ nixpkgs ? <nixpkgs>
7, pkgs ? import nixpkgs { config = {}; }
8, lib ? pkgs.lib
9, stdenv ? pkgs.stdenv
10, buildRustCrate ? pkgs.buildRustCrate
11 # This is used as the `crateOverrides` argument for `buildRustCrate`.
12, defaultCrateOverrides ? pkgs.defaultCrateOverrides
13 # The features to enable for the root_crate or the workspace_members.
14, rootFeatures ? [ "default" ]
15 # If true, throw errors instead of issueing deprecation warnings.
16, strictDeprecation ? false
17 # Whether to perform release builds: longer compile times, faster binaries.
18, release ? true
19}:
20
21rec {
22 #
23 # "public" attributes that we attempt to keep stable with new versions of crate2nix.
24 #
25
26 rootCrate = rec {
27 packageId = "hedge";
28
29 # Use this attribute to refer to the derivation building your root crate package.
30 # You can override the features with rootCrate.build.override { features = [ "default" "feature1" ... ]; }.
31 build = internal.buildRustCrateWithFeatures {
32 inherit packageId;
33 };
34
35 # Debug support which might change between releases.
36 # File a bug if you depend on any for non-debug work!
37 debug = internal.debugCrate { inherit packageId; };
38 };
39 root_crate =
40 internal.deprecationWarning
41 "root_crate is deprecated since crate2nix 0.4. Please use rootCrate instead."
42 rootCrate.build;
43 # Refer your crate build derivation by name here.
44 # You can override the features with
45 # workspaceMembers."${crateName}".build.override { features = [ "default" "feature1" ... ]; }.
46 workspaceMembers = {
47 "hedge" = rec {
48 packageId = "hedge";
49 build = internal.buildRustCrateWithFeatures {
50 packageId = "hedge";
51 };
52
53 # Debug support which might change between releases.
54 # File a bug if you depend on any for non-debug work!
55 debug = internal.debugCrate { inherit packageId; };
56 };
57 };
58 workspace_members =
59 internal.deprecationWarning
60 "workspace_members is deprecated in crate2nix 0.4. Please use workspaceMembers instead."
61 lib.mapAttrs (n: v: v.build) workspaceMembers;
62
63 #
64 # "internal" ("private") attributes that may change in every new version of crate2nix.
65 #
66
67 internal = rec {
68 # Build and dependency information for crates.
69 # Many of the fields are passed one-to-one to buildRustCrate.
70 #
71 # Noteworthy:
72 # * `dependencies`/`buildDependencies`: similar to the corresponding fields for buildRustCrate.
73 # but with additional information which is used during dependency/feature resolution.
74 # * `resolvedDependencies`: the selected default features reported by cargo - only included for debugging.
75 # * `devDependencies` as of now not used by `buildRustCrate` but used to
76 # inject test dependencies into the build
77
78 crates = {
79 "aho-corasick" = rec {
80 crateName = "aho-corasick";
81 version = "0.7.13";
82 edition = "2015";
83 sha256 = "11hfmqf90rdvjdpk0x1lixw1s9n08y3fxfy9zqsk0k2wpbc68c84";
84 libName = "aho_corasick";
85 authors = [
86 "Andrew Gallant <[email protected]>"
87 ];
88 dependencies = [
89 {
90 name = "memchr";
91 packageId = "memchr";
92 usesDefaultFeatures = false;
93 }
94 ];
95 features = {
96 "default" = [ "std" ];
97 "std" = [ "memchr/use_std" ];
98 };
99 resolvedDefaultFeatures = [ "default" "std" ];
100 };
101 "arc-swap" = rec {
102 crateName = "arc-swap";
103 version = "0.4.7";
104 edition = "2015";
105 sha256 = "0d2hqwpkkz7jflrf3ziy5gpblix0h72x1yalls01a15qss7xh9ad";
106 authors = [
107 "Michal 'vorner' Vaner <[email protected]>"
108 ];
109 features = {
110 };
111 };
112 "atty" = rec {
113 crateName = "atty";
114 version = "0.2.14";
115 edition = "2015";
116 sha256 = "1s7yslcs6a28c5vz7jwj63lkfgyx8mx99fdirlhi9lbhhzhrpcyr";
117 authors = [
118 "softprops <[email protected]>"
119 ];
120 dependencies = [
121 {
122 name = "hermit-abi";
123 packageId = "hermit-abi";
124 target = { target, features }: (target."os" == "hermit");
125 }
126 {
127 name = "libc";
128 packageId = "libc";
129 usesDefaultFeatures = false;
130 target = { target, features }: target."unix";
131 }
132 {
133 name = "winapi";
134 packageId = "winapi 0.3.9";
135 target = { target, features }: target."windows";
136 features = [ "consoleapi" "processenv" "minwinbase" "minwindef" "winbase" ];
137 }
138 ];
139
140 };
141 "autocfg" = rec {
142 crateName = "autocfg";
143 version = "1.0.1";
144 edition = "2015";
145 sha256 = "0jj6i9zn4gjl03kjvziqdji6rwx8ykz8zk2ngpc331z2g3fk3c6d";
146 authors = [
147 "Josh Stone <[email protected]>"
148 ];
149
150 };
151 "bitflags" = rec {
152 crateName = "bitflags";
153 version = "1.2.1";
154 edition = "2015";
155 sha256 = "14qnd5nq8p2almk79m4m8ydqhd413yaxsyjp5xd19g3mikzf47fg";
156 authors = [
157 "The Rust Project Developers"
158 ];
159 features = {
160 };
161 resolvedDefaultFeatures = [ "default" ];
162 };
163 "bytes" = rec {
164 crateName = "bytes";
165 version = "0.5.6";
166 edition = "2018";
167 sha256 = "0f5s7xq6qzmdh22ygsy8v0sp02m51y0radvq4i4y8cizy1lfqk0f";
168 authors = [
169 "Carl Lerche <[email protected]>"
170 "Sean McArthur <[email protected]>"
171 ];
172 features = {
173 "default" = [ "std" ];
174 };
175 resolvedDefaultFeatures = [ "default" "std" ];
176 };
177 "cfg-if" = rec {
178 crateName = "cfg-if";
179 version = "0.1.10";
180 edition = "2018";
181 sha256 = "08h80ihs74jcyp24cd75wwabygbbdgl05k6p5dmq8akbr78vv1a7";
182 authors = [
183 "Alex Crichton <[email protected]>"
184 ];
185 features = {
186 "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
187 };
188 };
189 "env_logger" = rec {
190 crateName = "env_logger";
191 version = "0.7.1";
192 edition = "2018";
193 sha256 = "0djx8h8xfib43g5w94r1m1mkky5spcw4wblzgnhiyg5vnfxknls4";
194 authors = [
195 "The Rust Project Developers"
196 ];
197 dependencies = [
198 {
199 name = "atty";
200 packageId = "atty";
201 optional = true;
202 }
203 {
204 name = "humantime";
205 packageId = "humantime";
206 optional = true;
207 }
208 {
209 name = "log";
210 packageId = "log";
211 features = [ "std" ];
212 }
213 {
214 name = "regex";
215 packageId = "regex";
216 optional = true;
217 }
218 {
219 name = "termcolor";
220 packageId = "termcolor";
221 optional = true;
222 }
223 ];
224 features = {
225 "default" = [ "termcolor" "atty" "humantime" "regex" ];
226 };
227 resolvedDefaultFeatures = [ "atty" "default" "humantime" "regex" "termcolor" ];
228 };
229 "fallible-iterator" = rec {
230 crateName = "fallible-iterator";
231 version = "0.2.0";
232 edition = "2018";
233 sha256 = "1xq759lsr8gqss7hva42azn3whgrbrs2sd9xpn92c5ickxm1fhs4";
234 authors = [
235 "Steven Fackler <[email protected]>"
236 ];
237 features = {
238 "default" = [ "std" ];
239 };
240 resolvedDefaultFeatures = [ "default" "std" ];
241 };
242 "fallible-streaming-iterator" = rec {
243 crateName = "fallible-streaming-iterator";
244 version = "0.1.9";
245 edition = "2015";
246 sha256 = "0nj6j26p71bjy8h42x6jahx1hn0ng6mc2miwpgwnp8vnwqf4jq3k";
247 authors = [
248 "Steven Fackler <[email protected]>"
249 ];
250 features = {
251 };
252 };
253 "fnv" = rec {
254 crateName = "fnv";
255 version = "1.0.7";
256 edition = "2015";
257 sha256 = "1hc2mcqha06aibcaza94vbi81j6pr9a1bbxrxjfhc91zin8yr7iz";
258 libPath = "lib.rs";
259 authors = [
260 "Alex Crichton <[email protected]>"
261 ];
262 features = {
263 "default" = [ "std" ];
264 };
265 resolvedDefaultFeatures = [ "default" "std" ];
266 };
267 "fuchsia-zircon" = rec {
268 crateName = "fuchsia-zircon";
269 version = "0.3.3";
270 edition = "2015";
271 sha256 = "10jxc5ks1x06gpd0xg51kcjrxr35nj6qhx2zlc5n7bmskv3675rf";
272 authors = [
273 "Raph Levien <[email protected]>"
274 ];
275 dependencies = [
276 {
277 name = "bitflags";
278 packageId = "bitflags";
279 }
280 {
281 name = "fuchsia-zircon-sys";
282 packageId = "fuchsia-zircon-sys";
283 }
284 ];
285
286 };
287 "fuchsia-zircon-sys" = rec {
288 crateName = "fuchsia-zircon-sys";
289 version = "0.3.3";
290 edition = "2015";
291 sha256 = "19zp2085qsyq2bh1gvcxq1lb8w6v6jj9kbdkhpdjrl95fypakjix";
292 authors = [
293 "Raph Levien <[email protected]>"
294 ];
295
296 };
297 "futures-channel" = rec {
298 crateName = "futures-channel";
299 version = "0.3.5";
300 edition = "2018";
301 sha256 = "1mb756zxpgrsr0lxkgl358jlpyrwi0i68pnrasj6pjlcq9sasrpk";
302 authors = [
303 "Alex Crichton <[email protected]>"
304 ];
305 dependencies = [
306 {
307 name = "futures-core";
308 packageId = "futures-core";
309 usesDefaultFeatures = false;
310 }
311 ];
312 features = {
313 "alloc" = [ "futures-core/alloc" ];
314 "cfg-target-has-atomic" = [ "futures-core/cfg-target-has-atomic" ];
315 "default" = [ "std" ];
316 "sink" = [ "futures-sink" ];
317 "std" = [ "alloc" "futures-core/std" ];
318 "unstable" = [ "futures-core/unstable" ];
319 };
320 resolvedDefaultFeatures = [ "alloc" "default" "std" ];
321 };
322 "futures-core" = rec {
323 crateName = "futures-core";
324 version = "0.3.5";
325 edition = "2018";
326 sha256 = "16d35ic4b4dkv1gy39cvy2v4391b9014hrxd6vwp3nfm1zwzzxar";
327 authors = [
328 "Alex Crichton <[email protected]>"
329 ];
330 features = {
331 "default" = [ "std" ];
332 "std" = [ "alloc" ];
333 };
334 resolvedDefaultFeatures = [ "alloc" "default" "std" ];
335 };
336 "futures-macro" = rec {
337 crateName = "futures-macro";
338 version = "0.3.5";
339 edition = "2018";
340 sha256 = "0f8d4kmdxx0h7nca90zdpnbk429w6d3w8dw2hxrm9ar88c5a7dfh";
341 procMacro = true;
342 authors = [
343 "Taylor Cramer <[email protected]>"
344 "Taiki Endo <[email protected]>"
345 ];
346 dependencies = [
347 {
348 name = "proc-macro-hack";
349 packageId = "proc-macro-hack";
350 }
351 {
352 name = "proc-macro2";
353 packageId = "proc-macro2";
354 }
355 {
356 name = "quote";
357 packageId = "quote";
358 }
359 {
360 name = "syn";
361 packageId = "syn";
362 features = [ "full" ];
363 }
364 ];
365
366 };
367 "futures-sink" = rec {
368 crateName = "futures-sink";
369 version = "0.3.5";
370 edition = "2018";
371 sha256 = "1k4azaq6x7g9kmpvc91vx5w541y4p340rkl5bnhcfd5p7j4k481z";
372 authors = [
373 "Alex Crichton <[email protected]>"
374 ];
375 features = {
376 "default" = [ "std" ];
377 "std" = [ "alloc" ];
378 };
379 resolvedDefaultFeatures = [ "alloc" "default" "std" ];
380 };
381 "futures-task" = rec {
382 crateName = "futures-task";
383 version = "0.3.5";
384 edition = "2018";
385 sha256 = "09m647nghwsg46ckys2846jfga6fbdwgfc08mfqij87215gnpdmx";
386 authors = [
387 "Alex Crichton <[email protected]>"
388 ];
389 dependencies = [
390 {
391 name = "once_cell";
392 packageId = "once_cell";
393 optional = true;
394 usesDefaultFeatures = false;
395 features = [ "std" ];
396 }
397 ];
398 features = {
399 "default" = [ "std" ];
400 "std" = [ "alloc" "once_cell" ];
401 };
402 resolvedDefaultFeatures = [ "alloc" "once_cell" "std" ];
403 };
404 "futures-util" = rec {
405 crateName = "futures-util";
406 version = "0.3.5";
407 edition = "2018";
408 sha256 = "1iijrqcamgll0h0r6ww9mh3ln4292c1wghw28h41lw4by17mfr47";
409 authors = [
410 "Alex Crichton <[email protected]>"
411 ];
412 dependencies = [
413 {
414 name = "futures-core";
415 packageId = "futures-core";
416 usesDefaultFeatures = false;
417 }
418 {
419 name = "futures-macro";
420 packageId = "futures-macro";
421 optional = true;
422 usesDefaultFeatures = false;
423 }
424 {
425 name = "futures-task";
426 packageId = "futures-task";
427 usesDefaultFeatures = false;
428 }
429 {
430 name = "pin-project";
431 packageId = "pin-project";
432 }
433 {
434 name = "pin-utils";
435 packageId = "pin-utils";
436 }
437 {
438 name = "proc-macro-hack";
439 packageId = "proc-macro-hack";
440 optional = true;
441 }
442 {
443 name = "proc-macro-nested";
444 packageId = "proc-macro-nested";
445 optional = true;
446 }
447 {
448 name = "slab";
449 packageId = "slab";
450 optional = true;
451 }
452 ];
453 features = {
454 "alloc" = [ "futures-core/alloc" "futures-task/alloc" ];
455 "async-await-macro" = [ "async-await" "futures-macro" "proc-macro-hack" "proc-macro-nested" ];
456 "cfg-target-has-atomic" = [ "futures-core/cfg-target-has-atomic" "futures-task/cfg-target-has-atomic" ];
457 "channel" = [ "std" "futures-channel" ];
458 "compat" = [ "std" "futures_01" ];
459 "default" = [ "std" "async-await" "async-await-macro" ];
460 "io" = [ "std" "futures-io" "memchr" ];
461 "io-compat" = [ "io" "compat" "tokio-io" ];
462 "read-initializer" = [ "io" "futures-io/read-initializer" "futures-io/unstable" ];
463 "sink" = [ "futures-sink" ];
464 "std" = [ "alloc" "futures-core/std" "futures-task/std" "slab" ];
465 "unstable" = [ "futures-core/unstable" "futures-task/unstable" ];
466 "write-all-vectored" = [ "io" ];
467 };
468 resolvedDefaultFeatures = [ "alloc" "async-await" "async-await-macro" "default" "futures-macro" "proc-macro-hack" "proc-macro-nested" "slab" "std" ];
469 };
470 "h2" = rec {
471 crateName = "h2";
472 version = "0.2.6";
473 edition = "2018";
474 sha256 = "0lvdrzn43iikl521dlrb7z96lsmy7l6nnm35ylf00q7dmq5rwgwr";
475 authors = [
476 "Carl Lerche <[email protected]>"
477 "Sean McArthur <[email protected]>"
478 ];
479 dependencies = [
480 {
481 name = "bytes";
482 packageId = "bytes";
483 }
484 {
485 name = "fnv";
486 packageId = "fnv";
487 }
488 {
489 name = "futures-core";
490 packageId = "futures-core";
491 usesDefaultFeatures = false;
492 }
493 {
494 name = "futures-sink";
495 packageId = "futures-sink";
496 usesDefaultFeatures = false;
497 }
498 {
499 name = "futures-util";
500 packageId = "futures-util";
501 usesDefaultFeatures = false;
502 }
503 {
504 name = "http";
505 packageId = "http";
506 }
507 {
508 name = "indexmap";
509 packageId = "indexmap";
510 }
511 {
512 name = "slab";
513 packageId = "slab";
514 }
515 {
516 name = "tokio";
517 packageId = "tokio";
518 features = [ "io-util" ];
519 }
520 {
521 name = "tokio-util";
522 packageId = "tokio-util";
523 features = [ "codec" ];
524 }
525 {
526 name = "tracing";
527 packageId = "tracing";
528 usesDefaultFeatures = false;
529 features = [ "std" "log" ];
530 }
531 ];
532 devDependencies = [
533 {
534 name = "tokio";
535 packageId = "tokio";
536 features = [ "dns" "macros" "rt-core" "sync" "tcp" ];
537 }
538 ];
539 features = {
540 };
541 };
542 "hashbrown" = rec {
543 crateName = "hashbrown";
544 version = "0.8.2";
545 edition = "2018";
546 sha256 = "09cckr5l71ypvfdbvv1qsag4222blixwn9300hpbr831j3vn46z9";
547 authors = [
548 "Amanieu d'Antras <[email protected]>"
549 ];
550 buildDependencies = [
551 {
552 name = "autocfg";
553 packageId = "autocfg";
554 }
555 ];
556 features = {
557 "ahash-compile-time-rng" = [ "ahash/compile-time-rng" ];
558 "default" = [ "ahash" "inline-more" ];
559 "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ];
560 };
561 resolvedDefaultFeatures = [ "raw" ];
562 };
563 "hedge" = rec {
564 crateName = "hedge";
565 version = "0.1.0";
566 edition = "2018";
567 crateBin = [
568 { name = "hedge"; path = "src/main.rs"; }
569 ];
570 src = (builtins.filterSource sourceFilter ./.);
571 authors = [
572 "Akshay <[email protected]>"
573 ];
574 dependencies = [
575 {
576 name = "futures-util";
577 packageId = "futures-util";
578 }
579 {
580 name = "hyper";
581 packageId = "hyper";
582 }
583 {
584 name = "pretty_env_logger";
585 packageId = "pretty_env_logger";
586 }
587 {
588 name = "rusqlite";
589 packageId = "rusqlite";
590 }
591 {
592 name = "tokio";
593 packageId = "tokio";
594 features = [ "full" ];
595 }
596 ];
597
598 };
599 "hermit-abi" = rec {
600 crateName = "hermit-abi";
601 version = "0.1.15";
602 edition = "2018";
603 sha256 = "1ac5bij39rhzs8zngfxi109dh0h3v0jl5ng8595f9yg7nsbd3vix";
604 authors = [
605 "Stefan Lankes"
606 ];
607 dependencies = [
608 {
609 name = "libc";
610 packageId = "libc";
611 usesDefaultFeatures = false;
612 }
613 ];
614 features = {
615 "rustc-dep-of-std" = [ "core" "compiler_builtins/rustc-dep-of-std" "libc/rustc-dep-of-std" ];
616 };
617 resolvedDefaultFeatures = [ "default" ];
618 };
619 "http" = rec {
620 crateName = "http";
621 version = "0.2.1";
622 edition = "2018";
623 sha256 = "1y827q7j0gvs8z2x12biaik9db6nb902lpqv889cbcj84sbnkm98";
624 authors = [
625 "Alex Crichton <[email protected]>"
626 "Carl Lerche <[email protected]>"
627 "Sean McArthur <[email protected]>"
628 ];
629 dependencies = [
630 {
631 name = "bytes";
632 packageId = "bytes";
633 }
634 {
635 name = "fnv";
636 packageId = "fnv";
637 }
638 {
639 name = "itoa";
640 packageId = "itoa";
641 }
642 ];
643
644 };
645 "http-body" = rec {
646 crateName = "http-body";
647 version = "0.3.1";
648 edition = "2018";
649 sha256 = "06qi0ni45lb92w3ml260c0bxbq5zd4snjmz0a9k69xq6021zzm8k";
650 authors = [
651 "Carl Lerche <[email protected]>"
652 "Lucio Franco <[email protected]>"
653 "Sean McArthur <[email protected]>"
654 ];
655 dependencies = [
656 {
657 name = "bytes";
658 packageId = "bytes";
659 }
660 {
661 name = "http";
662 packageId = "http";
663 }
664 ];
665
666 };
667 "httparse" = rec {
668 crateName = "httparse";
669 version = "1.3.4";
670 edition = "2015";
671 sha256 = "1yf23ldnjwfkkhkca7f4w15mky9961gjz28dlwyybhphc7l9l5yd";
672 authors = [
673 "Sean McArthur <[email protected]>"
674 ];
675 features = {
676 "default" = [ "std" ];
677 };
678 resolvedDefaultFeatures = [ "default" "std" ];
679 };
680 "humantime" = rec {
681 crateName = "humantime";
682 version = "1.3.0";
683 edition = "2015";
684 sha256 = "0krwgbf35pd46xvkqg14j070vircsndabahahlv3rwhflpy4q06z";
685 authors = [
686 "Paul Colomiets <[email protected]>"
687 ];
688 dependencies = [
689 {
690 name = "quick-error";
691 packageId = "quick-error";
692 }
693 ];
694
695 };
696 "hyper" = rec {
697 crateName = "hyper";
698 version = "0.13.7";
699 edition = "2018";
700 sha256 = "1symcnba2y03b8lj6xp2wd994lk3xyk3wizacjg5s60njzfshs1y";
701 authors = [
702 "Sean McArthur <[email protected]>"
703 ];
704 dependencies = [
705 {
706 name = "bytes";
707 packageId = "bytes";
708 }
709 {
710 name = "futures-channel";
711 packageId = "futures-channel";
712 }
713 {
714 name = "futures-core";
715 packageId = "futures-core";
716 usesDefaultFeatures = false;
717 }
718 {
719 name = "futures-util";
720 packageId = "futures-util";
721 usesDefaultFeatures = false;
722 }
723 {
724 name = "h2";
725 packageId = "h2";
726 }
727 {
728 name = "http";
729 packageId = "http";
730 }
731 {
732 name = "http-body";
733 packageId = "http-body";
734 }
735 {
736 name = "httparse";
737 packageId = "httparse";
738 }
739 {
740 name = "itoa";
741 packageId = "itoa";
742 }
743 {
744 name = "pin-project";
745 packageId = "pin-project";
746 }
747 {
748 name = "socket2";
749 packageId = "socket2";
750 optional = true;
751 }
752 {
753 name = "time";
754 packageId = "time";
755 }
756 {
757 name = "tokio";
758 packageId = "tokio";
759 features = [ "sync" ];
760 }
761 {
762 name = "tower-service";
763 packageId = "tower-service";
764 }
765 {
766 name = "tracing";
767 packageId = "tracing";
768 usesDefaultFeatures = false;
769 features = [ "log" "std" ];
770 }
771 {
772 name = "want";
773 packageId = "want";
774 }
775 ];
776 devDependencies = [
777 {
778 name = "futures-util";
779 packageId = "futures-util";
780 usesDefaultFeatures = false;
781 features = [ "alloc" ];
782 }
783 {
784 name = "tokio";
785 packageId = "tokio";
786 features = [ "fs" "macros" "io-std" "rt-util" "sync" "time" "test-util" ];
787 }
788 ];
789 features = {
790 "default" = [ "runtime" "stream" ];
791 "runtime" = [ "tcp" "tokio/rt-core" ];
792 "tcp" = [ "socket2" "tokio/blocking" "tokio/tcp" "tokio/time" ];
793 };
794 resolvedDefaultFeatures = [ "default" "runtime" "socket2" "stream" "tcp" ];
795 };
796 "indexmap" = rec {
797 crateName = "indexmap";
798 version = "1.5.1";
799 edition = "2018";
800 sha256 = "1y9dmqbwpgh86qqpnb99mllbvlvri39xb3vkz4dv2xkcn5cmxd46";
801 authors = [
802 "bluss"
803 "Josh Stone <[email protected]>"
804 ];
805 dependencies = [
806 {
807 name = "hashbrown";
808 packageId = "hashbrown";
809 usesDefaultFeatures = false;
810 features = [ "raw" ];
811 }
812 ];
813 buildDependencies = [
814 {
815 name = "autocfg";
816 packageId = "autocfg";
817 }
818 ];
819 features = {
820 "serde-1" = [ "serde" ];
821 };
822 };
823 "iovec" = rec {
824 crateName = "iovec";
825 version = "0.1.4";
826 edition = "2015";
827 sha256 = "0ph73qygwx8i0mblrf110cj59l00gkmsgrpzz1rm85syz5pymcxj";
828 authors = [
829 "Carl Lerche <[email protected]>"
830 ];
831 dependencies = [
832 {
833 name = "libc";
834 packageId = "libc";
835 target = { target, features }: target."unix";
836 }
837 ];
838
839 };
840 "itoa" = rec {
841 crateName = "itoa";
842 version = "0.4.6";
843 edition = "2015";
844 sha256 = "1rnpb7rr8df76gnlk07b9086cn7fc0dxxy1ghh00q6nip7bklvyw";
845 authors = [
846 "David Tolnay <[email protected]>"
847 ];
848 features = {
849 "default" = [ "std" ];
850 };
851 resolvedDefaultFeatures = [ "default" "std" ];
852 };
853 "kernel32-sys" = rec {
854 crateName = "kernel32-sys";
855 version = "0.2.2";
856 edition = "2015";
857 sha256 = "1389av0601a9yz8dvx5zha9vmkd6ik7ax0idpb032d28555n41vm";
858 libName = "kernel32";
859 authors = [
860 "Peter Atashian <[email protected]>"
861 ];
862 dependencies = [
863 {
864 name = "winapi";
865 packageId = "winapi 0.2.8";
866 }
867 ];
868 buildDependencies = [
869 {
870 name = "winapi-build";
871 packageId = "winapi-build";
872 }
873 ];
874
875 };
876 "lazy_static" = rec {
877 crateName = "lazy_static";
878 version = "1.4.0";
879 edition = "2015";
880 sha256 = "0in6ikhw8mgl33wjv6q6xfrb5b9jr16q8ygjy803fay4zcisvaz2";
881 authors = [
882 "Marvin Löbel <[email protected]>"
883 ];
884 features = {
885 "spin_no_std" = [ "spin" ];
886 };
887 };
888 "libc" = rec {
889 crateName = "libc";
890 version = "0.2.76";
891 edition = "2015";
892 sha256 = "1hvv01y8cjlkg6xqgvflgq4p77p15a83w6xxpcggmrj4w3x5cm3m";
893 authors = [
894 "The Rust Project Developers"
895 ];
896 features = {
897 "default" = [ "std" ];
898 "rustc-dep-of-std" = [ "align" "rustc-std-workspace-core" ];
899 "use_std" = [ "std" ];
900 };
901 resolvedDefaultFeatures = [ "default" "std" ];
902 };
903 "libsqlite3-sys" = rec {
904 crateName = "libsqlite3-sys";
905 version = "0.20.0";
906 edition = "2018";
907 sha256 = "1nzm07nrqgz28pld0qc4mfhr96inkzdfn9vfyj8w41hv9fc4b8p3";
908 authors = [
909 "The rusqlite developers"
910 ];
911 buildDependencies = [
912 {
913 name = "pkg-config";
914 packageId = "pkg-config";
915 optional = true;
916 }
917 {
918 name = "vcpkg";
919 packageId = "vcpkg";
920 optional = true;
921 target = {target, features}: (target."env" == "msvc");
922 }
923 ];
924 features = {
925 "buildtime_bindgen" = [ "bindgen" "pkg-config" "vcpkg" ];
926 "bundled" = [ "cc" "bundled_bindings" ];
927 "bundled-windows" = [ "cc" "bundled_bindings" ];
928 "default" = [ "min_sqlite_version_3_6_8" ];
929 "min_sqlite_version_3_6_23" = [ "pkg-config" "vcpkg" ];
930 "min_sqlite_version_3_6_8" = [ "pkg-config" "vcpkg" ];
931 "min_sqlite_version_3_7_16" = [ "pkg-config" "vcpkg" ];
932 "min_sqlite_version_3_7_7" = [ "pkg-config" "vcpkg" ];
933 "preupdate_hook" = [ "buildtime_bindgen" ];
934 "session" = [ "preupdate_hook" "buildtime_bindgen" ];
935 };
936 resolvedDefaultFeatures = [ "default" "min_sqlite_version_3_6_8" "pkg-config" "vcpkg" ];
937 };
938 "linked-hash-map" = rec {
939 crateName = "linked-hash-map";
940 version = "0.5.3";
941 edition = "2015";
942 sha256 = "0jih3za0p1mywlnwcakc462q1byk6z8vnrzdm36hg6cxk7asdmcd";
943 authors = [
944 "Stepan Koltsov <[email protected]>"
945 "Andrew Paseltiner <[email protected]>"
946 ];
947 features = {
948 "heapsize_impl" = [ "heapsize" ];
949 "serde_impl" = [ "serde" "serde_test" ];
950 };
951 };
952 "log" = rec {
953 crateName = "log";
954 version = "0.4.11";
955 edition = "2015";
956 sha256 = "12xzqaflpiljn5cmxsbnbv9sjaj13ykhwsvll0gysbx4blbyvasg";
957 authors = [
958 "The Rust Project Developers"
959 ];
960 dependencies = [
961 {
962 name = "cfg-if";
963 packageId = "cfg-if";
964 }
965 ];
966 features = {
967 "kv_unstable_sval" = [ "kv_unstable" "sval/fmt" ];
968 };
969 resolvedDefaultFeatures = [ "std" ];
970 };
971 "lru-cache" = rec {
972 crateName = "lru-cache";
973 version = "0.1.2";
974 edition = "2015";
975 sha256 = "071viv6g2p3akwqmfb3c8vsycs5n7kr17b70l7la071jv0d4zqii";
976 authors = [
977 "Stepan Koltsov <[email protected]>"
978 ];
979 dependencies = [
980 {
981 name = "linked-hash-map";
982 packageId = "linked-hash-map";
983 }
984 ];
985 features = {
986 "heapsize_impl" = [ "heapsize" "linked-hash-map/heapsize_impl" ];
987 };
988 };
989 "memchr" = rec {
990 crateName = "memchr";
991 version = "2.3.3";
992 edition = "2015";
993 sha256 = "0074pvsfl938ndl5js14ibc7i9q0k3zp390z843w8nlyv4bxha1p";
994 authors = [
995 "Andrew Gallant <[email protected]>"
996 "bluss"
997 ];
998 features = {
999 "default" = [ "std" ];
1000 "use_std" = [ "std" ];
1001 };
1002 resolvedDefaultFeatures = [ "default" "std" "use_std" ];
1003 };
1004 "mio" = rec {
1005 crateName = "mio";
1006 version = "0.6.22";
1007 edition = "2015";
1008 sha256 = "0c64razhyam9892kgxsshmkqs6smrd11087nxb48nhjn4q4lgqzw";
1009 authors = [
1010 "Carl Lerche <[email protected]>"
1011 ];
1012 dependencies = [
1013 {
1014 name = "cfg-if";
1015 packageId = "cfg-if";
1016 }
1017 {
1018 name = "fuchsia-zircon";
1019 packageId = "fuchsia-zircon";
1020 target = { target, features }: (target."os" == "fuchsia");
1021 }
1022 {
1023 name = "fuchsia-zircon-sys";
1024 packageId = "fuchsia-zircon-sys";
1025 target = { target, features }: (target."os" == "fuchsia");
1026 }
1027 {
1028 name = "iovec";
1029 packageId = "iovec";
1030 }
1031 {
1032 name = "kernel32-sys";
1033 packageId = "kernel32-sys";
1034 target = { target, features }: target."windows";
1035 }
1036 {
1037 name = "libc";
1038 packageId = "libc";
1039 target = { target, features }: target."unix";
1040 }
1041 {
1042 name = "log";
1043 packageId = "log";
1044 }
1045 {
1046 name = "miow";
1047 packageId = "miow 0.2.1";
1048 target = { target, features }: target."windows";
1049 }
1050 {
1051 name = "net2";
1052 packageId = "net2";
1053 }
1054 {
1055 name = "slab";
1056 packageId = "slab";
1057 }
1058 {
1059 name = "winapi";
1060 packageId = "winapi 0.2.8";
1061 target = { target, features }: target."windows";
1062 }
1063 ];
1064 features = {
1065 "default" = [ "with-deprecated" ];
1066 };
1067 resolvedDefaultFeatures = [ "default" "with-deprecated" ];
1068 };
1069 "mio-named-pipes" = rec {
1070 crateName = "mio-named-pipes";
1071 version = "0.1.7";
1072 edition = "2018";
1073 sha256 = "0mjnjcg5dkb2jwxh4zxx4fgp15wr3hj9r53z4hdm4pnm1z2w2h08";
1074 authors = [
1075 "Brendan Molloy <[email protected]>"
1076 "Alex Crichton <[email protected]>"
1077 ];
1078 dependencies = [
1079 {
1080 name = "log";
1081 packageId = "log";
1082 target = { target, features }: target."windows";
1083 }
1084 {
1085 name = "mio";
1086 packageId = "mio";
1087 target = { target, features }: target."windows";
1088 }
1089 {
1090 name = "miow";
1091 packageId = "miow 0.3.5";
1092 target = { target, features }: target."windows";
1093 }
1094 {
1095 name = "winapi";
1096 packageId = "winapi 0.3.9";
1097 target = { target, features }: target."windows";
1098 features = [ "winerror" "ioapiset" "minwinbase" "winbase" ];
1099 }
1100 ];
1101
1102 };
1103 "mio-uds" = rec {
1104 crateName = "mio-uds";
1105 version = "0.6.8";
1106 edition = "2015";
1107 sha256 = "1w36w09gd8as1mah80wdy0kgpshmphmljj68gij34hvdnag6kjxg";
1108 authors = [
1109 "Alex Crichton <[email protected]>"
1110 ];
1111 dependencies = [
1112 {
1113 name = "iovec";
1114 packageId = "iovec";
1115 target = { target, features }: target."unix";
1116 }
1117 {
1118 name = "libc";
1119 packageId = "libc";
1120 target = { target, features }: target."unix";
1121 }
1122 {
1123 name = "mio";
1124 packageId = "mio";
1125 target = { target, features }: target."unix";
1126 }
1127 ];
1128
1129 };
1130 "miow 0.2.1" = rec {
1131 crateName = "miow";
1132 version = "0.2.1";
1133 edition = "2015";
1134 sha256 = "06g9b8sqlh5gxakwqq4rrib07afwanfnxgxajrldwcgk3hxjy7wc";
1135 authors = [
1136 "Alex Crichton <[email protected]>"
1137 ];
1138 dependencies = [
1139 {
1140 name = "kernel32-sys";
1141 packageId = "kernel32-sys";
1142 }
1143 {
1144 name = "net2";
1145 packageId = "net2";
1146 usesDefaultFeatures = false;
1147 }
1148 {
1149 name = "winapi";
1150 packageId = "winapi 0.2.8";
1151 }
1152 {
1153 name = "ws2_32-sys";
1154 packageId = "ws2_32-sys";
1155 }
1156 ];
1157
1158 };
1159 "miow 0.3.5" = rec {
1160 crateName = "miow";
1161 version = "0.3.5";
1162 edition = "2018";
1163 sha256 = "17lpb2754vg6vflk2vgka4kz2p4gkbsgnb815bb3ckaxg6wqzf07";
1164 authors = [
1165 "Alex Crichton <[email protected]>"
1166 ];
1167 dependencies = [
1168 {
1169 name = "socket2";
1170 packageId = "socket2";
1171 }
1172 {
1173 name = "winapi";
1174 packageId = "winapi 0.3.9";
1175 features = [ "std" "fileapi" "handleapi" "ioapiset" "minwindef" "namedpipeapi" "ntdef" "synchapi" "winerror" "winsock2" "ws2def" "ws2ipdef" ];
1176 }
1177 ];
1178
1179 };
1180 "net2" = rec {
1181 crateName = "net2";
1182 version = "0.2.34";
1183 edition = "2015";
1184 sha256 = "1xsay6x9fqkq34mfyfyavkrk29z7j4wb9fzw5as4yw3nmhcck9rb";
1185 authors = [
1186 "Alex Crichton <[email protected]>"
1187 ];
1188 dependencies = [
1189 {
1190 name = "cfg-if";
1191 packageId = "cfg-if";
1192 }
1193 {
1194 name = "libc";
1195 packageId = "libc";
1196 target = { target, features }: ((target."os" == "redox") || target."unix" || (target."os" == "wasi"));
1197 }
1198 {
1199 name = "winapi";
1200 packageId = "winapi 0.3.9";
1201 target = { target, features }: target."windows";
1202 features = [ "handleapi" "winsock2" "ws2def" "ws2ipdef" "ws2tcpip" ];
1203 }
1204 ];
1205 features = {
1206 "default" = [ "duration" ];
1207 };
1208 resolvedDefaultFeatures = [ "default" "duration" ];
1209 };
1210 "num_cpus" = rec {
1211 crateName = "num_cpus";
1212 version = "1.13.0";
1213 edition = "2015";
1214 sha256 = "1cv6yxhz2zbnwn8pn1yn8grg7zsnd523947fby41a737aqvryj85";
1215 authors = [
1216 "Sean McArthur <[email protected]>"
1217 ];
1218 dependencies = [
1219 {
1220 name = "hermit-abi";
1221 packageId = "hermit-abi";
1222 target = { target, features }: (((target."arch" == "x86_64") || (target."arch" == "aarch64")) && (target."os" == "hermit"));
1223 }
1224 {
1225 name = "libc";
1226 packageId = "libc";
1227 }
1228 ];
1229
1230 };
1231 "once_cell" = rec {
1232 crateName = "once_cell";
1233 version = "1.4.1";
1234 edition = "2018";
1235 sha256 = "1ba56vr8n85xgajnn78pg6iag4inwil3mqg90wi5jaz6xzkm23i6";
1236 authors = [
1237 "Aleksey Kladov <[email protected]>"
1238 ];
1239 features = {
1240 "default" = [ "std" ];
1241 };
1242 resolvedDefaultFeatures = [ "std" ];
1243 };
1244 "pin-project" = rec {
1245 crateName = "pin-project";
1246 version = "0.4.23";
1247 edition = "2018";
1248 sha256 = "1aj8ivjr7bw3dmnp53zj10a0fx6ij3lqx7vx94p38ydfybzk6i6a";
1249 authors = [
1250 "Taiki Endo <[email protected]>"
1251 ];
1252 dependencies = [
1253 {
1254 name = "pin-project-internal";
1255 packageId = "pin-project-internal";
1256 usesDefaultFeatures = false;
1257 }
1258 ];
1259
1260 };
1261 "pin-project-internal" = rec {
1262 crateName = "pin-project-internal";
1263 version = "0.4.23";
1264 edition = "2018";
1265 sha256 = "07s66r7c6dirkvcjhqsndaf3qmvwl45c28dgypyk38797rf823ic";
1266 procMacro = true;
1267 authors = [
1268 "Taiki Endo <[email protected]>"
1269 ];
1270 dependencies = [
1271 {
1272 name = "proc-macro2";
1273 packageId = "proc-macro2";
1274 }
1275 {
1276 name = "quote";
1277 packageId = "quote";
1278 }
1279 {
1280 name = "syn";
1281 packageId = "syn";
1282 features = [ "full" "visit-mut" ];
1283 }
1284 ];
1285
1286 };
1287 "pin-project-lite" = rec {
1288 crateName = "pin-project-lite";
1289 version = "0.1.7";
1290 edition = "2018";
1291 sha256 = "05dp09xswfb18i2jmlvzkb0pd0fin9s3m64fgyksg6161zqxnai8";
1292 authors = [
1293 "Taiki Endo <[email protected]>"
1294 ];
1295
1296 };
1297 "pin-utils" = rec {
1298 crateName = "pin-utils";
1299 version = "0.1.0";
1300 edition = "2018";
1301 sha256 = "117ir7vslsl2z1a7qzhws4pd01cg2d3338c47swjyvqv2n60v1wb";
1302 authors = [
1303 "Josef Brandl <[email protected]>"
1304 ];
1305
1306 };
1307 "pkg-config" = rec {
1308 crateName = "pkg-config";
1309 version = "0.3.18";
1310 edition = "2015";
1311 sha256 = "0cxc4yd9qb40944a2svgci41bws68f1hqvyljhrldwbadda94r6k";
1312 authors = [
1313 "Alex Crichton <[email protected]>"
1314 ];
1315
1316 };
1317 "pretty_env_logger" = rec {
1318 crateName = "pretty_env_logger";
1319 version = "0.4.0";
1320 edition = "2015";
1321 sha256 = "17gva1rlf9fhgr0jr19kv39f8bir3f4pa4jz02qbhl9qanwkcvcj";
1322 authors = [
1323 "Sean McArthur <sean@seanmonstar>"
1324 ];
1325 dependencies = [
1326 {
1327 name = "env_logger";
1328 packageId = "env_logger";
1329 }
1330 {
1331 name = "log";
1332 packageId = "log";
1333 }
1334 ];
1335
1336 };
1337 "proc-macro-hack" = rec {
1338 crateName = "proc-macro-hack";
1339 version = "0.5.18";
1340 edition = "2018";
1341 sha256 = "16055crxm9l5skrl96l5cs6xc4xnvhiggcf625r7pixdl2whbilr";
1342 procMacro = true;
1343 authors = [
1344 "David Tolnay <[email protected]>"
1345 ];
1346
1347 };
1348 "proc-macro-nested" = rec {
1349 crateName = "proc-macro-nested";
1350 version = "0.1.6";
1351 edition = "2015";
1352 sha256 = "0nnwm9bvp1fmr8nqjp8ynrkj97yzpsdh3062li8b0f4hzgd818gb";
1353 authors = [
1354 "David Tolnay <[email protected]>"
1355 ];
1356
1357 };
1358 "proc-macro2" = rec {
1359 crateName = "proc-macro2";
1360 version = "1.0.19";
1361 edition = "2018";
1362 sha256 = "04lb4n7g5z9mq6in39i7yb1m5bb107dfawc2rf4227npnn2z1x84";
1363 authors = [
1364 "Alex Crichton <[email protected]>"
1365 "David Tolnay <[email protected]>"
1366 ];
1367 dependencies = [
1368 {
1369 name = "unicode-xid";
1370 packageId = "unicode-xid";
1371 }
1372 ];
1373 features = {
1374 "default" = [ "proc-macro" ];
1375 };
1376 resolvedDefaultFeatures = [ "default" "proc-macro" ];
1377 };
1378 "quick-error" = rec {
1379 crateName = "quick-error";
1380 version = "1.2.3";
1381 edition = "2015";
1382 sha256 = "1q6za3v78hsspisc197bg3g7rpc989qycy8ypr8ap8igv10ikl51";
1383 authors = [
1384 "Paul Colomiets <[email protected]>"
1385 "Colin Kiegel <[email protected]>"
1386 ];
1387
1388 };
1389 "quote" = rec {
1390 crateName = "quote";
1391 version = "1.0.7";
1392 edition = "2018";
1393 sha256 = "0drzd6pq7whq7qhdvvs8wn6pbb0hhc12pz8wv80fb05ixhbksmma";
1394 authors = [
1395 "David Tolnay <[email protected]>"
1396 ];
1397 dependencies = [
1398 {
1399 name = "proc-macro2";
1400 packageId = "proc-macro2";
1401 usesDefaultFeatures = false;
1402 }
1403 ];
1404 features = {
1405 "default" = [ "proc-macro" ];
1406 "proc-macro" = [ "proc-macro2/proc-macro" ];
1407 };
1408 resolvedDefaultFeatures = [ "default" "proc-macro" ];
1409 };
1410 "redox_syscall" = rec {
1411 crateName = "redox_syscall";
1412 version = "0.1.57";
1413 edition = "2015";
1414 sha256 = "1kh59fpwy33w9nwd5iyc283yglq8pf2s41hnhvl48iax9mz0zk21";
1415 libName = "syscall";
1416 authors = [
1417 "Jeremy Soller <[email protected]>"
1418 ];
1419
1420 };
1421 "regex" = rec {
1422 crateName = "regex";
1423 version = "1.3.9";
1424 edition = "2015";
1425 sha256 = "1rnqga94ypykl2apgj26l2j1s9bvr2ix4dlzs323n6abyky80dww";
1426 authors = [
1427 "The Rust Project Developers"
1428 ];
1429 dependencies = [
1430 {
1431 name = "aho-corasick";
1432 packageId = "aho-corasick";
1433 optional = true;
1434 }
1435 {
1436 name = "memchr";
1437 packageId = "memchr";
1438 optional = true;
1439 }
1440 {
1441 name = "regex-syntax";
1442 packageId = "regex-syntax";
1443 usesDefaultFeatures = false;
1444 }
1445 {
1446 name = "thread_local";
1447 packageId = "thread_local";
1448 optional = true;
1449 }
1450 ];
1451 features = {
1452 "default" = [ "std" "perf" "unicode" "regex-syntax/default" ];
1453 "perf" = [ "perf-cache" "perf-dfa" "perf-inline" "perf-literal" ];
1454 "perf-cache" = [ "thread_local" ];
1455 "perf-literal" = [ "aho-corasick" "memchr" ];
1456 "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" "regex-syntax/unicode" ];
1457 "unicode-age" = [ "regex-syntax/unicode-age" ];
1458 "unicode-bool" = [ "regex-syntax/unicode-bool" ];
1459 "unicode-case" = [ "regex-syntax/unicode-case" ];
1460 "unicode-gencat" = [ "regex-syntax/unicode-gencat" ];
1461 "unicode-perl" = [ "regex-syntax/unicode-perl" ];
1462 "unicode-script" = [ "regex-syntax/unicode-script" ];
1463 "unicode-segment" = [ "regex-syntax/unicode-segment" ];
1464 "unstable" = [ "pattern" ];
1465 "use_std" = [ "std" ];
1466 };
1467 resolvedDefaultFeatures = [ "aho-corasick" "default" "memchr" "perf" "perf-cache" "perf-dfa" "perf-inline" "perf-literal" "std" "thread_local" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
1468 };
1469 "regex-syntax" = rec {
1470 crateName = "regex-syntax";
1471 version = "0.6.18";
1472 edition = "2015";
1473 sha256 = "1s648w7rwpxnq9iqwbyy43ar4al07906jpz0jxlql23bgjwjwh96";
1474 authors = [
1475 "The Rust Project Developers"
1476 ];
1477 features = {
1478 "default" = [ "unicode" ];
1479 "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
1480 };
1481 resolvedDefaultFeatures = [ "default" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
1482 };
1483 "rusqlite" = rec {
1484 crateName = "rusqlite";
1485 version = "0.24.0";
1486 edition = "2018";
1487 sha256 = "1vxrg3m22pchyf10mhl60npgsckbaj426jyvsa2bcvlxblkw6y2c";
1488 authors = [
1489 "The rusqlite developers"
1490 ];
1491 dependencies = [
1492 {
1493 name = "bitflags";
1494 packageId = "bitflags";
1495 }
1496 {
1497 name = "fallible-iterator";
1498 packageId = "fallible-iterator";
1499 }
1500 {
1501 name = "fallible-streaming-iterator";
1502 packageId = "fallible-streaming-iterator";
1503 }
1504 {
1505 name = "libsqlite3-sys";
1506 packageId = "libsqlite3-sys";
1507 }
1508 {
1509 name = "lru-cache";
1510 packageId = "lru-cache";
1511 }
1512 {
1513 name = "memchr";
1514 packageId = "memchr";
1515 }
1516 {
1517 name = "smallvec";
1518 packageId = "smallvec";
1519 }
1520 ];
1521 features = {
1522 "array" = [ "vtab" ];
1523 "backup" = [ "libsqlite3-sys/min_sqlite_version_3_6_23" ];
1524 "blob" = [ "libsqlite3-sys/min_sqlite_version_3_7_7" ];
1525 "buildtime_bindgen" = [ "libsqlite3-sys/buildtime_bindgen" ];
1526 "bundled" = [ "libsqlite3-sys/bundled" "modern_sqlite" ];
1527 "bundled-full" = [ "array" "backup" "blob" "bundled" "chrono" "collation" "column_decltype" "csvtab" "extra_check" "functions" "hooks" "i128_blob" "limits" "load_extension" "serde_json" "series" "trace" "unlock_notify" "url" "uuid" "vtab" "window" ];
1528 "bundled-windows" = [ "libsqlite3-sys/bundled-windows" ];
1529 "csvtab" = [ "csv" "vtab" ];
1530 "functions" = [ "libsqlite3-sys/min_sqlite_version_3_7_7" ];
1531 "i128_blob" = [ "byteorder" ];
1532 "in_gecko" = [ "modern_sqlite" "libsqlite3-sys/in_gecko" ];
1533 "modern_sqlite" = [ "libsqlite3-sys/bundled_bindings" ];
1534 "series" = [ "vtab" ];
1535 "session" = [ "libsqlite3-sys/session" "hooks" ];
1536 "sqlcipher" = [ "libsqlite3-sys/sqlcipher" ];
1537 "trace" = [ "libsqlite3-sys/min_sqlite_version_3_6_23" ];
1538 "unlock_notify" = [ "libsqlite3-sys/unlock_notify" ];
1539 "vtab" = [ "libsqlite3-sys/min_sqlite_version_3_7_7" "lazy_static" ];
1540 "wasm32-wasi-vfs" = [ "libsqlite3-sys/wasm32-wasi-vfs" ];
1541 "window" = [ "functions" ];
1542 "with-asan" = [ "libsqlite3-sys/with-asan" ];
1543 };
1544 };
1545 "signal-hook-registry" = rec {
1546 crateName = "signal-hook-registry";
1547 version = "1.2.1";
1548 edition = "2015";
1549 sha256 = "0dgh2l7diyhkf74jjyqz1jfsyqsvxgssls30cix6b7jkph823qd3";
1550 authors = [
1551 "Michal 'vorner' Vaner <[email protected]>"
1552 "Masaki Hara <[email protected]>"
1553 ];
1554 dependencies = [
1555 {
1556 name = "arc-swap";
1557 packageId = "arc-swap";
1558 }
1559 {
1560 name = "libc";
1561 packageId = "libc";
1562 }
1563 ];
1564
1565 };
1566 "slab" = rec {
1567 crateName = "slab";
1568 version = "0.4.2";
1569 edition = "2015";
1570 sha256 = "1y59xsa27jk84sxzswjk60xcjf8b4fm5960jwpznrrcmasyva4f1";
1571 authors = [
1572 "Carl Lerche <[email protected]>"
1573 ];
1574
1575 };
1576 "smallvec" = rec {
1577 crateName = "smallvec";
1578 version = "1.4.2";
1579 edition = "2018";
1580 sha256 = "0lp2ax6hfbcsqa92xkdz8vnlfc0fhpqczv62l64kvgsbp2b7dvpv";
1581 authors = [
1582 "The Servo Project Developers"
1583 ];
1584 features = {
1585 };
1586 };
1587 "socket2" = rec {
1588 crateName = "socket2";
1589 version = "0.3.12";
1590 edition = "2018";
1591 sha256 = "062921z4yc29mwzxx982nwd1kb8lnfqyvhncydbf7p3pys9qf203";
1592 authors = [
1593 "Alex Crichton <[email protected]>"
1594 ];
1595 dependencies = [
1596 {
1597 name = "cfg-if";
1598 packageId = "cfg-if";
1599 target = { target, features }: (target."unix" || (target."os" == "redox"));
1600 }
1601 {
1602 name = "libc";
1603 packageId = "libc";
1604 target = { target, features }: (target."unix" || (target."os" == "redox"));
1605 }
1606 {
1607 name = "redox_syscall";
1608 packageId = "redox_syscall";
1609 target = { target, features }: (target."os" == "redox");
1610 }
1611 {
1612 name = "winapi";
1613 packageId = "winapi 0.3.9";
1614 target = { target, features }: target."windows";
1615 features = [ "handleapi" "ws2def" "ws2ipdef" "ws2tcpip" "minwindef" ];
1616 }
1617 ];
1618 features = {
1619 };
1620 };
1621 "syn" = rec {
1622 crateName = "syn";
1623 version = "1.0.39";
1624 edition = "2018";
1625 sha256 = "1y8ikwihdrfn64ybrhaqlbxlcf4g43s8mad36n47yz7ycxjqs7c9";
1626 authors = [
1627 "David Tolnay <[email protected]>"
1628 ];
1629 dependencies = [
1630 {
1631 name = "proc-macro2";
1632 packageId = "proc-macro2";
1633 usesDefaultFeatures = false;
1634 }
1635 {
1636 name = "quote";
1637 packageId = "quote";
1638 optional = true;
1639 usesDefaultFeatures = false;
1640 }
1641 {
1642 name = "unicode-xid";
1643 packageId = "unicode-xid";
1644 }
1645 ];
1646 features = {
1647 "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ];
1648 "printing" = [ "quote" ];
1649 "proc-macro" = [ "proc-macro2/proc-macro" "quote/proc-macro" ];
1650 "test" = [ "syn-test-suite/all-features" ];
1651 };
1652 resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "full" "parsing" "printing" "proc-macro" "quote" "visit-mut" ];
1653 };
1654 "termcolor" = rec {
1655 crateName = "termcolor";
1656 version = "1.1.0";
1657 edition = "2018";
1658 sha256 = "0pyp8vc0gx7124y80ixdl6plbfn1yjhw04i875k5fz2dk8lglsxv";
1659 authors = [
1660 "Andrew Gallant <[email protected]>"
1661 ];
1662 dependencies = [
1663 {
1664 name = "winapi-util";
1665 packageId = "winapi-util";
1666 target = { target, features }: target."windows";
1667 }
1668 ];
1669
1670 };
1671 "thread_local" = rec {
1672 crateName = "thread_local";
1673 version = "1.0.1";
1674 edition = "2015";
1675 sha256 = "054vlrr1vsdy1h4b7n99mr24pnj8928ig9qwzg36wnkld4dns36l";
1676 authors = [
1677 "Amanieu d'Antras <[email protected]>"
1678 ];
1679 dependencies = [
1680 {
1681 name = "lazy_static";
1682 packageId = "lazy_static";
1683 }
1684 ];
1685
1686 };
1687 "time" = rec {
1688 crateName = "time";
1689 version = "0.1.43";
1690 edition = "2015";
1691 sha256 = "0f14wrgxj7ya2v4msg5mni7046bsm2angm7cn3pd3yv04gpm12na";
1692 authors = [
1693 "The Rust Project Developers"
1694 ];
1695 dependencies = [
1696 {
1697 name = "libc";
1698 packageId = "libc";
1699 }
1700 {
1701 name = "winapi";
1702 packageId = "winapi 0.3.9";
1703 target = { target, features }: target."windows";
1704 features = [ "std" "minwinbase" "minwindef" "ntdef" "profileapi" "sysinfoapi" "timezoneapi" ];
1705 }
1706 ];
1707 devDependencies = [
1708 {
1709 name = "winapi";
1710 packageId = "winapi 0.3.9";
1711 features = [ "std" "processthreadsapi" "winbase" ];
1712 }
1713 ];
1714
1715 };
1716 "tokio" = rec {
1717 crateName = "tokio";
1718 version = "0.2.22";
1719 edition = "2018";
1720 sha256 = "1kfw5lgq1sswlbxq98j5q45bdxv4hhd907nksysbbwjbv1acld2x";
1721 authors = [
1722 "Tokio Contributors <[email protected]>"
1723 ];
1724 dependencies = [
1725 {
1726 name = "bytes";
1727 packageId = "bytes";
1728 }
1729 {
1730 name = "fnv";
1731 packageId = "fnv";
1732 optional = true;
1733 }
1734 {
1735 name = "futures-core";
1736 packageId = "futures-core";
1737 optional = true;
1738 }
1739 {
1740 name = "iovec";
1741 packageId = "iovec";
1742 optional = true;
1743 }
1744 {
1745 name = "lazy_static";
1746 packageId = "lazy_static";
1747 optional = true;
1748 }
1749 {
1750 name = "libc";
1751 packageId = "libc";
1752 optional = true;
1753 target = { target, features }: target."unix";
1754 }
1755 {
1756 name = "memchr";
1757 packageId = "memchr";
1758 optional = true;
1759 }
1760 {
1761 name = "mio";
1762 packageId = "mio";
1763 optional = true;
1764 }
1765 {
1766 name = "mio-named-pipes";
1767 packageId = "mio-named-pipes";
1768 optional = true;
1769 target = { target, features }: target."windows";
1770 }
1771 {
1772 name = "mio-uds";
1773 packageId = "mio-uds";
1774 optional = true;
1775 target = { target, features }: target."unix";
1776 }
1777 {
1778 name = "num_cpus";
1779 packageId = "num_cpus";
1780 optional = true;
1781 }
1782 {
1783 name = "pin-project-lite";
1784 packageId = "pin-project-lite";
1785 }
1786 {
1787 name = "signal-hook-registry";
1788 packageId = "signal-hook-registry";
1789 optional = true;
1790 target = { target, features }: target."unix";
1791 }
1792 {
1793 name = "slab";
1794 packageId = "slab";
1795 optional = true;
1796 }
1797 {
1798 name = "tokio-macros";
1799 packageId = "tokio-macros";
1800 optional = true;
1801 }
1802 {
1803 name = "winapi";
1804 packageId = "winapi 0.3.9";
1805 optional = true;
1806 usesDefaultFeatures = false;
1807 target = { target, features }: target."windows";
1808 }
1809 ];
1810 features = {
1811 "blocking" = [ "rt-core" ];
1812 "dns" = [ "rt-core" ];
1813 "fs" = [ "rt-core" "io-util" ];
1814 "full" = [ "blocking" "dns" "fs" "io-driver" "io-util" "io-std" "macros" "net" "process" "rt-core" "rt-util" "rt-threaded" "signal" "stream" "sync" "time" ];
1815 "io-driver" = [ "mio" "lazy_static" ];
1816 "io-std" = [ "rt-core" ];
1817 "io-util" = [ "memchr" ];
1818 "macros" = [ "tokio-macros" ];
1819 "net" = [ "dns" "tcp" "udp" "uds" ];
1820 "process" = [ "io-driver" "libc" "mio-named-pipes" "signal" "winapi/consoleapi" "winapi/minwindef" "winapi/threadpoollegacyapiset" "winapi/winerror" ];
1821 "rt-threaded" = [ "num_cpus" "rt-core" ];
1822 "signal" = [ "io-driver" "lazy_static" "libc" "mio-uds" "signal-hook-registry" "winapi/consoleapi" "winapi/minwindef" ];
1823 "stream" = [ "futures-core" ];
1824 "sync" = [ "fnv" ];
1825 "tcp" = [ "io-driver" "iovec" ];
1826 "time" = [ "slab" ];
1827 "udp" = [ "io-driver" ];
1828 "uds" = [ "io-driver" "mio-uds" "libc" ];
1829 };
1830 resolvedDefaultFeatures = [ "blocking" "default" "dns" "fnv" "fs" "full" "futures-core" "io-driver" "io-std" "io-util" "iovec" "lazy_static" "libc" "macros" "memchr" "mio" "mio-named-pipes" "mio-uds" "net" "num_cpus" "process" "rt-core" "rt-threaded" "rt-util" "signal" "signal-hook-registry" "slab" "stream" "sync" "tcp" "time" "tokio-macros" "udp" "uds" "winapi" ];
1831 };
1832 "tokio-macros" = rec {
1833 crateName = "tokio-macros";
1834 version = "0.2.5";
1835 edition = "2018";
1836 sha256 = "1283aq0l7rnh79zzqk4r34dgimvwcymrzmg1yah9ai2nmb3arhzh";
1837 procMacro = true;
1838 authors = [
1839 "Tokio Contributors <[email protected]>"
1840 ];
1841 dependencies = [
1842 {
1843 name = "proc-macro2";
1844 packageId = "proc-macro2";
1845 }
1846 {
1847 name = "quote";
1848 packageId = "quote";
1849 }
1850 {
1851 name = "syn";
1852 packageId = "syn";
1853 features = [ "full" ];
1854 }
1855 ];
1856
1857 };
1858 "tokio-util" = rec {
1859 crateName = "tokio-util";
1860 version = "0.3.1";
1861 edition = "2018";
1862 sha256 = "16b48dl6sbc9x944jgjvsd65ab1w2c2qcziddbrbwv1b3y4l50my";
1863 authors = [
1864 "Tokio Contributors <[email protected]>"
1865 ];
1866 dependencies = [
1867 {
1868 name = "bytes";
1869 packageId = "bytes";
1870 }
1871 {
1872 name = "futures-core";
1873 packageId = "futures-core";
1874 }
1875 {
1876 name = "futures-sink";
1877 packageId = "futures-sink";
1878 }
1879 {
1880 name = "log";
1881 packageId = "log";
1882 }
1883 {
1884 name = "pin-project-lite";
1885 packageId = "pin-project-lite";
1886 }
1887 {
1888 name = "tokio";
1889 packageId = "tokio";
1890 }
1891 ];
1892 devDependencies = [
1893 {
1894 name = "tokio";
1895 packageId = "tokio";
1896 features = [ "full" ];
1897 }
1898 ];
1899 features = {
1900 "codec" = [ "tokio/stream" ];
1901 "compat" = [ "futures-io" ];
1902 "full" = [ "codec" "udp" "compat" ];
1903 "udp" = [ "tokio/udp" ];
1904 };
1905 resolvedDefaultFeatures = [ "codec" "default" ];
1906 };
1907 "tower-service" = rec {
1908 crateName = "tower-service";
1909 version = "0.3.0";
1910 edition = "2018";
1911 sha256 = "0q4q53w82w1wd71x7vbspg2l3jicb6al2w1qdwxmnjrz8jzvd1z9";
1912 authors = [
1913 "Tower Maintainers <[email protected]>"
1914 ];
1915
1916 };
1917 "tracing" = rec {
1918 crateName = "tracing";
1919 version = "0.1.19";
1920 edition = "2018";
1921 sha256 = "0v3qhqnkmwar0zbkqj5z4achpjl9279xw3v61kinqb833c3clybd";
1922 authors = [
1923 "Eliza Weisman <[email protected]>"
1924 "Tokio Contributors <[email protected]>"
1925 ];
1926 dependencies = [
1927 {
1928 name = "cfg-if";
1929 packageId = "cfg-if";
1930 }
1931 {
1932 name = "log";
1933 packageId = "log";
1934 optional = true;
1935 }
1936 {
1937 name = "tracing-core";
1938 packageId = "tracing-core";
1939 usesDefaultFeatures = false;
1940 }
1941 ];
1942 devDependencies = [
1943 {
1944 name = "log";
1945 packageId = "log";
1946 }
1947 ];
1948 features = {
1949 "attributes" = [ "tracing-attributes" ];
1950 "default" = [ "std" "attributes" ];
1951 "log-always" = [ "log" ];
1952 "std" = [ "tracing-core/std" ];
1953 };
1954 resolvedDefaultFeatures = [ "log" "std" ];
1955 };
1956 "tracing-core" = rec {
1957 crateName = "tracing-core";
1958 version = "0.1.14";
1959 edition = "2018";
1960 sha256 = "0i9mig6849il9wspwgds08mgipwkrh3kg0vdlcyb85n34ckncqyv";
1961 authors = [
1962 "Tokio Contributors <[email protected]>"
1963 ];
1964 dependencies = [
1965 {
1966 name = "lazy_static";
1967 packageId = "lazy_static";
1968 optional = true;
1969 }
1970 ];
1971 features = {
1972 "default" = [ "std" ];
1973 "std" = [ "lazy_static" ];
1974 };
1975 resolvedDefaultFeatures = [ "lazy_static" "std" ];
1976 };
1977 "try-lock" = rec {
1978 crateName = "try-lock";
1979 version = "0.2.3";
1980 edition = "2015";
1981 sha256 = "0hkn1ksmg5hdqgqdw1ahy5qk69f4crh2psf0v61qphyrf777nm2r";
1982 authors = [
1983 "Sean McArthur <[email protected]>"
1984 ];
1985
1986 };
1987 "unicode-xid" = rec {
1988 crateName = "unicode-xid";
1989 version = "0.2.1";
1990 edition = "2015";
1991 sha256 = "0r6mknipyy9vpz8mwmxvkx65ff2ha1n2pxqjj6f46lcn8yrhpzpp";
1992 authors = [
1993 "erick.tryzelaar <[email protected]>"
1994 "kwantam <[email protected]>"
1995 ];
1996 features = {
1997 };
1998 resolvedDefaultFeatures = [ "default" ];
1999 };
2000 "vcpkg" = rec {
2001 crateName = "vcpkg";
2002 version = "0.2.10";
2003 edition = "2015";
2004 sha256 = "132hlmsc4maava91vl4lh677sl1c7vr8ccl53fnr5w41y6dh4m34";
2005 authors = [
2006 "Jim McGrath <[email protected]>"
2007 ];
2008
2009 };
2010 "want" = rec {
2011 crateName = "want";
2012 version = "0.3.0";
2013 edition = "2018";
2014 sha256 = "181b2zmwfq389x9n2g1n37cvcvvdand832zz6v8i1l8wrdlaks0w";
2015 authors = [
2016 "Sean McArthur <[email protected]>"
2017 ];
2018 dependencies = [
2019 {
2020 name = "log";
2021 packageId = "log";
2022 }
2023 {
2024 name = "try-lock";
2025 packageId = "try-lock";
2026 }
2027 ];
2028
2029 };
2030 "winapi 0.2.8" = rec {
2031 crateName = "winapi";
2032 version = "0.2.8";
2033 edition = "2015";
2034 sha256 = "0yh816lh6lf56dpsgxy189c2ai1z3j8mw9si6izqb6wsjkbcjz8n";
2035 authors = [
2036 "Peter Atashian <[email protected]>"
2037 ];
2038
2039 };
2040 "winapi 0.3.9" = rec {
2041 crateName = "winapi";
2042 version = "0.3.9";
2043 edition = "2015";
2044 sha256 = "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw";
2045 authors = [
2046 "Peter Atashian <[email protected]>"
2047 ];
2048 dependencies = [
2049 {
2050 name = "winapi-i686-pc-windows-gnu";
2051 packageId = "winapi-i686-pc-windows-gnu";
2052 target = { target, features }: (stdenv.hostPlatform.config == "i686-pc-windows-gnu");
2053 }
2054 {
2055 name = "winapi-x86_64-pc-windows-gnu";
2056 packageId = "winapi-x86_64-pc-windows-gnu";
2057 target = { target, features }: (stdenv.hostPlatform.config == "x86_64-pc-windows-gnu");
2058 }
2059 ];
2060 features = {
2061 "debug" = [ "impl-debug" ];
2062 };
2063 resolvedDefaultFeatures = [ "consoleapi" "errhandlingapi" "fileapi" "handleapi" "ioapiset" "minwinbase" "minwindef" "namedpipeapi" "ntdef" "processenv" "profileapi" "std" "synchapi" "sysinfoapi" "threadpoollegacyapiset" "timezoneapi" "winbase" "wincon" "winerror" "winnt" "winsock2" "ws2def" "ws2ipdef" "ws2tcpip" ];
2064 };
2065 "winapi-build" = rec {
2066 crateName = "winapi-build";
2067 version = "0.1.1";
2068 edition = "2015";
2069 sha256 = "1g4rqsgjky0a7530qajn2bbfcrl2v0zb39idgdws9b1l7gp5wc9d";
2070 libName = "build";
2071 authors = [
2072 "Peter Atashian <[email protected]>"
2073 ];
2074
2075 };
2076 "winapi-i686-pc-windows-gnu" = rec {
2077 crateName = "winapi-i686-pc-windows-gnu";
2078 version = "0.4.0";
2079 edition = "2015";
2080 sha256 = "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc";
2081 authors = [
2082 "Peter Atashian <[email protected]>"
2083 ];
2084
2085 };
2086 "winapi-util" = rec {
2087 crateName = "winapi-util";
2088 version = "0.1.5";
2089 edition = "2018";
2090 sha256 = "0y71bp7f6d536czj40dhqk0d55wfbbwqfp2ymqf1an5ibgl6rv3h";
2091 authors = [
2092 "Andrew Gallant <[email protected]>"
2093 ];
2094 dependencies = [
2095 {
2096 name = "winapi";
2097 packageId = "winapi 0.3.9";
2098 target = { target, features }: target."windows";
2099 features = [ "std" "consoleapi" "errhandlingapi" "fileapi" "minwindef" "processenv" "winbase" "wincon" "winerror" "winnt" ];
2100 }
2101 ];
2102
2103 };
2104 "winapi-x86_64-pc-windows-gnu" = rec {
2105 crateName = "winapi-x86_64-pc-windows-gnu";
2106 version = "0.4.0";
2107 edition = "2015";
2108 sha256 = "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki";
2109 authors = [
2110 "Peter Atashian <[email protected]>"
2111 ];
2112
2113 };
2114 "ws2_32-sys" = rec {
2115 crateName = "ws2_32-sys";
2116 version = "0.2.1";
2117 edition = "2015";
2118 sha256 = "0ppscg5qfqaw0gzwv2a4nhn5bn01ff9iwn6ysqnzm4n8s3myz76m";
2119 libName = "ws2_32";
2120 authors = [
2121 "Peter Atashian <[email protected]>"
2122 ];
2123 dependencies = [
2124 {
2125 name = "winapi";
2126 packageId = "winapi 0.2.8";
2127 }
2128 ];
2129 buildDependencies = [
2130 {
2131 name = "winapi-build";
2132 packageId = "winapi-build";
2133 }
2134 ];
2135
2136 };
2137 };
2138
2139 #
2140# crate2nix/default.nix (excerpt start)
2141#
2142
2143 /* Target (platform) data for conditional dependencies.
2144 This corresponds roughly to what buildRustCrate is setting.
2145 */
2146 defaultTarget = {
2147 unix = true;
2148 windows = false;
2149 fuchsia = true;
2150 test = false;
2151
2152 # This doesn't appear to be officially documented anywhere yet.
2153 # See https://github.com/rust-lang-nursery/rust-forge/issues/101.
2154 os = if stdenv.hostPlatform.isDarwin
2155 then "macos"
2156 else stdenv.hostPlatform.parsed.kernel.name;
2157 arch = stdenv.hostPlatform.parsed.cpu.name;
2158 family = "unix";
2159 env = "gnu";
2160 endian =
2161 if stdenv.hostPlatform.parsed.cpu.significantByte.name == "littleEndian"
2162 then "little" else "big";
2163 pointer_width = toString stdenv.hostPlatform.parsed.cpu.bits;
2164 vendor = stdenv.hostPlatform.parsed.vendor.name;
2165 debug_assertions = false;
2166 };
2167
2168 /* Filters common temp files and build files. */
2169 # TODO(pkolloch): Substitute with gitignore filter
2170 sourceFilter = name: type:
2171 let
2172 baseName = builtins.baseNameOf (builtins.toString name);
2173 in
2174 ! (
2175 # Filter out git
2176 baseName == ".gitignore"
2177 || (type == "directory" && baseName == ".git")
2178
2179 # Filter out build results
2180 || (
2181 type == "directory" && (
2182 baseName == "target"
2183 || baseName == "_site"
2184 || baseName == ".sass-cache"
2185 || baseName == ".jekyll-metadata"
2186 || baseName == "build-artifacts"
2187 )
2188 )
2189
2190 # Filter out nix-build result symlinks
2191 || (
2192 type == "symlink" && lib.hasPrefix "result" baseName
2193 )
2194
2195 # Filter out IDE config
2196 || (
2197 type == "directory" && (
2198 baseName == ".idea" || baseName == ".vscode"
2199 )
2200 ) || lib.hasSuffix ".iml" baseName
2201
2202 # Filter out nix build files
2203 || baseName == "Cargo.nix"
2204
2205 # Filter out editor backup / swap files.
2206 || lib.hasSuffix "~" baseName
2207 || builtins.match "^\\.sw[a-z]$$" baseName != null
2208 || builtins.match "^\\..*\\.sw[a-z]$$" baseName != null
2209 || lib.hasSuffix ".tmp" baseName
2210 || lib.hasSuffix ".bak" baseName
2211 || baseName == "tests.nix"
2212 );
2213
2214 /* Returns a crate which depends on successful test execution
2215 of crate given as the second argument.
2216
2217 testCrateFlags: list of flags to pass to the test exectuable
2218 testInputs: list of packages that should be available during test execution
2219 */
2220 crateWithTest = { crate, testCrate, testCrateFlags, testInputs }:
2221 assert builtins.typeOf testCrateFlags == "list";
2222 assert builtins.typeOf testInputs == "list";
2223 let
2224 # override the `crate` so that it will build and execute tests instead of
2225 # building the actual lib and bin targets We just have to pass `--test`
2226 # to rustc and it will do the right thing. We execute the tests and copy
2227 # their log and the test executables to $out for later inspection.
2228 test = let
2229 drv = testCrate.override (
2230 _: {
2231 buildTests = true;
2232 }
2233 );
2234 in
2235 pkgs.runCommand "run-tests-${testCrate.name}" {
2236 inherit testCrateFlags;
2237 buildInputs = testInputs;
2238 } ''
2239 set -ex
2240 cd ${crate.src}
2241 for file in ${drv}/tests/*; do
2242 $file $testCrateFlags 2>&1 | tee -a $out
2243 done
2244 '';
2245 in
2246 crate.overrideAttrs (
2247 old: {
2248 checkPhase = ''
2249 test -e ${test}
2250 '';
2251 passthru = (old.passthru or {}) // {
2252 inherit test;
2253 };
2254 }
2255 );
2256
2257 /* A restricted overridable version of builtRustCratesWithFeatures. */
2258 buildRustCrateWithFeatures =
2259 { packageId
2260 , features ? rootFeatures
2261 , crateOverrides ? defaultCrateOverrides
2262 , buildRustCrateFunc ? (
2263 if crateOverrides == pkgs.defaultCrateOverrides
2264 then buildRustCrate
2265 else buildRustCrate.override {
2266 defaultCrateOverrides = crateOverrides;
2267 }
2268 )
2269 , runTests ? false
2270 , testCrateFlags ? []
2271 , testInputs ? []
2272 }:
2273 lib.makeOverridable
2274 (
2275 { features, crateOverrides, runTests, testCrateFlags, testInputs }:
2276 let
2277 builtRustCrates = builtRustCratesWithFeatures {
2278 inherit packageId features buildRustCrateFunc;
2279 runTests = false;
2280 };
2281 builtTestRustCrates = builtRustCratesWithFeatures {
2282 inherit packageId features buildRustCrateFunc;
2283 runTests = true;
2284 };
2285 drv = builtRustCrates.${packageId};
2286 testDrv = builtTestRustCrates.${packageId};
2287 in
2288 if runTests then
2289 crateWithTest {
2290 crate = drv;
2291 testCrate = testDrv;
2292 inherit testCrateFlags testInputs;
2293 }
2294 else drv
2295 )
2296 { inherit features crateOverrides runTests testCrateFlags testInputs; };
2297
2298 /* Returns an attr set with packageId mapped to the result of buildRustCrateFunc
2299 for the corresponding crate.
2300 */
2301 builtRustCratesWithFeatures =
2302 { packageId
2303 , features
2304 , crateConfigs ? crates
2305 , buildRustCrateFunc
2306 , runTests
2307 , target ? defaultTarget
2308 } @ args:
2309 assert (builtins.isAttrs crateConfigs);
2310 assert (builtins.isString packageId);
2311 assert (builtins.isList features);
2312 assert (builtins.isAttrs target);
2313 assert (builtins.isBool runTests);
2314 let
2315 rootPackageId = packageId;
2316 mergedFeatures = mergePackageFeatures (
2317 args // {
2318 inherit rootPackageId;
2319 target = target // { test = runTests; };
2320 }
2321 );
2322
2323 buildByPackageId = packageId: buildByPackageIdImpl packageId;
2324
2325 # Memoize built packages so that reappearing packages are only built once.
2326 builtByPackageId =
2327 lib.mapAttrs (packageId: value: buildByPackageId packageId) crateConfigs;
2328
2329 buildByPackageIdImpl = packageId:
2330 let
2331 features = mergedFeatures."${packageId}" or [];
2332 crateConfig' = crateConfigs."${packageId}";
2333 crateConfig =
2334 builtins.removeAttrs crateConfig' [ "resolvedDefaultFeatures" "devDependencies" ];
2335 devDependencies =
2336 lib.optionals
2337 (runTests && packageId == rootPackageId)
2338 (crateConfig'.devDependencies or []);
2339 dependencies =
2340 dependencyDerivations {
2341 inherit builtByPackageId features target;
2342 dependencies =
2343 (crateConfig.dependencies or [])
2344 ++ devDependencies;
2345 };
2346 buildDependencies =
2347 dependencyDerivations {
2348 inherit builtByPackageId features target;
2349 dependencies = crateConfig.buildDependencies or [];
2350 };
2351
2352 filterEnabledDependenciesForThis = dependencies: filterEnabledDependencies {
2353 inherit dependencies features target;
2354 };
2355
2356 dependenciesWithRenames =
2357 lib.filter (d: d ? "rename") (
2358 filterEnabledDependenciesForThis
2359 (
2360 (crateConfig.buildDependencies or [])
2361 ++ (crateConfig.dependencies or [])
2362 ++ devDependencies
2363 )
2364 );
2365
2366 crateRenames =
2367 builtins.listToAttrs
2368 (map (d: { name = d.name; value = d.rename; }) dependenciesWithRenames);
2369 in
2370 buildRustCrateFunc (
2371 crateConfig // {
2372 src = crateConfig.src or (
2373 pkgs.fetchurl {
2374 name = "${crateConfig.crateName}-${crateConfig.version}.tar.gz";
2375 url = "https://crates.io/api/v1/crates/${crateConfig.crateName}/${crateConfig.version}/download";
2376 sha256 = crateConfig.sha256;
2377 }
2378 );
2379 inherit features dependencies buildDependencies crateRenames release;
2380 }
2381 );
2382 in
2383 builtByPackageId;
2384
2385 /* Returns the actual derivations for the given dependencies. */
2386 dependencyDerivations =
2387 { builtByPackageId
2388 , features
2389 , dependencies
2390 , target
2391 }:
2392 assert (builtins.isAttrs builtByPackageId);
2393 assert (builtins.isList features);
2394 assert (builtins.isList dependencies);
2395 assert (builtins.isAttrs target);
2396 let
2397 enabledDependencies = filterEnabledDependencies {
2398 inherit dependencies features target;
2399 };
2400 depDerivation = dependency: builtByPackageId.${dependency.packageId};
2401 in
2402 map depDerivation enabledDependencies;
2403
2404 /* Returns a sanitized version of val with all values substituted that cannot
2405 be serialized as JSON.
2406 */
2407 sanitizeForJson = val:
2408 if builtins.isAttrs val
2409 then lib.mapAttrs (n: v: sanitizeForJson v) val
2410 else if builtins.isList val
2411 then builtins.map sanitizeForJson val
2412 else if builtins.isFunction val
2413 then "function"
2414 else val;
2415
2416 /* Returns various tools to debug a crate. */
2417 debugCrate = { packageId, target ? defaultTarget }:
2418 assert (builtins.isString packageId);
2419 let
2420 debug = rec {
2421 # The built tree as passed to buildRustCrate.
2422 buildTree = buildRustCrateWithFeatures {
2423 buildRustCrateFunc = lib.id;
2424 inherit packageId;
2425 };
2426 sanitizedBuildTree = sanitizeForJson buildTree;
2427 dependencyTree = sanitizeForJson (
2428 buildRustCrateWithFeatures {
2429 buildRustCrateFunc = crate: {
2430 "01_crateName" = crate.crateName or false;
2431 "02_features" = crate.features or [];
2432 "03_dependencies" = crate.dependencies or [];
2433 };
2434 inherit packageId;
2435 }
2436 );
2437 mergedPackageFeatures = mergePackageFeatures {
2438 features = rootFeatures;
2439 inherit packageId target;
2440 };
2441 diffedDefaultPackageFeatures = diffDefaultPackageFeatures {
2442 inherit packageId target;
2443 };
2444 };
2445 in
2446 { internal = debug; };
2447
2448 /* Returns differences between cargo default features and crate2nix default
2449 features.
2450
2451 This is useful for verifying the feature resolution in crate2nix.
2452 */
2453 diffDefaultPackageFeatures =
2454 { crateConfigs ? crates
2455 , packageId
2456 , target
2457 }:
2458 assert (builtins.isAttrs crateConfigs);
2459 let
2460 prefixValues = prefix: lib.mapAttrs (n: v: { "${prefix}" = v; });
2461 mergedFeatures =
2462 prefixValues
2463 "crate2nix"
2464 (mergePackageFeatures { inherit crateConfigs packageId target; features = [ "default" ]; });
2465 configs = prefixValues "cargo" crateConfigs;
2466 combined = lib.foldAttrs (a: b: a // b) {} [ mergedFeatures configs ];
2467 onlyInCargo =
2468 builtins.attrNames
2469 (lib.filterAttrs (n: v: !(v ? "crate2nix") && (v ? "cargo")) combined);
2470 onlyInCrate2Nix =
2471 builtins.attrNames
2472 (lib.filterAttrs (n: v: (v ? "crate2nix") && !(v ? "cargo")) combined);
2473 differentFeatures = lib.filterAttrs
2474 (
2475 n: v:
2476 (v ? "crate2nix")
2477 && (v ? "cargo")
2478 && (v.crate2nix.features or []) != (v."cargo".resolved_default_features or [])
2479 )
2480 combined;
2481 in
2482 builtins.toJSON {
2483 inherit onlyInCargo onlyInCrate2Nix differentFeatures;
2484 };
2485
2486 /* Returns an attrset mapping packageId to the list of enabled features.
2487
2488 If multiple paths to a dependency enable different features, the
2489 corresponding feature sets are merged. Features in rust are additive.
2490 */
2491 mergePackageFeatures =
2492 { crateConfigs ? crates
2493 , packageId
2494 , rootPackageId ? packageId
2495 , features ? rootFeatures
2496 , dependencyPath ? [ crates.${packageId}.crateName ]
2497 , featuresByPackageId ? {}
2498 , target
2499 # Adds devDependencies to the crate with rootPackageId.
2500 , runTests ? false
2501 , ...
2502 } @ args:
2503 assert (builtins.isAttrs crateConfigs);
2504 assert (builtins.isString packageId);
2505 assert (builtins.isString rootPackageId);
2506 assert (builtins.isList features);
2507 assert (builtins.isList dependencyPath);
2508 assert (builtins.isAttrs featuresByPackageId);
2509 assert (builtins.isAttrs target);
2510 assert (builtins.isBool runTests);
2511 let
2512 crateConfig = crateConfigs."${packageId}" or (builtins.throw "Package not found: ${packageId}");
2513 expandedFeatures = expandFeatures (crateConfig.features or {}) features;
2514
2515 depWithResolvedFeatures = dependency:
2516 let
2517 packageId = dependency.packageId;
2518 features = dependencyFeatures expandedFeatures dependency;
2519 in
2520 { inherit packageId features; };
2521
2522 resolveDependencies = cache: path: dependencies:
2523 assert (builtins.isAttrs cache);
2524 assert (builtins.isList dependencies);
2525 let
2526 enabledDependencies = filterEnabledDependencies {
2527 inherit dependencies target;
2528 features = expandedFeatures;
2529 };
2530 directDependencies = map depWithResolvedFeatures enabledDependencies;
2531 foldOverCache = op: lib.foldl op cache directDependencies;
2532 in
2533 foldOverCache
2534 (
2535 cache: { packageId, features }:
2536 let
2537 cacheFeatures = cache.${packageId} or [];
2538 combinedFeatures = sortedUnique (cacheFeatures ++ features);
2539 in
2540 if cache ? ${packageId} && cache.${packageId} == combinedFeatures
2541 then cache
2542 else mergePackageFeatures {
2543 features = combinedFeatures;
2544 featuresByPackageId = cache;
2545 inherit crateConfigs packageId target runTests rootPackageId;
2546 }
2547 );
2548
2549 cacheWithSelf =
2550 let
2551 cacheFeatures = featuresByPackageId.${packageId} or [];
2552 combinedFeatures = sortedUnique (cacheFeatures ++ expandedFeatures);
2553 in
2554 featuresByPackageId // {
2555 "${packageId}" = combinedFeatures;
2556 };
2557
2558 cacheWithDependencies =
2559 resolveDependencies cacheWithSelf "dep" (
2560 crateConfig.dependencies or []
2561 ++ lib.optionals
2562 (runTests && packageId == rootPackageId)
2563 (crateConfig.devDependencies or [])
2564 );
2565
2566 cacheWithAll =
2567 resolveDependencies
2568 cacheWithDependencies "build"
2569 (crateConfig.buildDependencies or []);
2570 in
2571 cacheWithAll;
2572
2573 /* Returns the enabled dependencies given the enabled features. */
2574 filterEnabledDependencies = { dependencies, features, target }:
2575 assert (builtins.isList dependencies);
2576 assert (builtins.isList features);
2577 assert (builtins.isAttrs target);
2578
2579 lib.filter
2580 (
2581 dep:
2582 let
2583 targetFunc = dep.target or (features: true);
2584 in
2585 targetFunc { inherit features target; }
2586 && (
2587 !(dep.optional or false)
2588 || builtins.any (doesFeatureEnableDependency dep) features
2589 )
2590 )
2591 dependencies;
2592
2593 /* Returns whether the given feature should enable the given dependency. */
2594 doesFeatureEnableDependency = { name, rename ? null, ... }: feature:
2595 let
2596 prefix = "${name}/";
2597 len = builtins.stringLength prefix;
2598 startsWithPrefix = builtins.substring 0 len feature == prefix;
2599 in
2600 (rename == null && feature == name)
2601 || (rename != null && rename == feature)
2602 || startsWithPrefix;
2603
2604 /* Returns the expanded features for the given inputFeatures by applying the
2605 rules in featureMap.
2606
2607 featureMap is an attribute set which maps feature names to lists of further
2608 feature names to enable in case this feature is selected.
2609 */
2610 expandFeatures = featureMap: inputFeatures:
2611 assert (builtins.isAttrs featureMap);
2612 assert (builtins.isList inputFeatures);
2613 let
2614 expandFeature = feature:
2615 assert (builtins.isString feature);
2616 [ feature ] ++ (expandFeatures featureMap (featureMap."${feature}" or []));
2617 outFeatures = builtins.concatMap expandFeature inputFeatures;
2618 in
2619 sortedUnique outFeatures;
2620
2621 /*
2622 Returns the actual features for the given dependency.
2623
2624 features: The features of the crate that refers this dependency.
2625 */
2626 dependencyFeatures = features: dependency:
2627 assert (builtins.isList features);
2628 assert (builtins.isAttrs dependency);
2629 let
2630 defaultOrNil = if dependency.usesDefaultFeatures or true
2631 then [ "default" ]
2632 else [];
2633 explicitFeatures = dependency.features or [];
2634 additionalDependencyFeatures =
2635 let
2636 dependencyPrefix = (dependency.rename or dependency.name) + "/";
2637 dependencyFeatures =
2638 builtins.filter (f: lib.hasPrefix dependencyPrefix f) features;
2639 in
2640 builtins.map (lib.removePrefix dependencyPrefix) dependencyFeatures;
2641 in
2642 defaultOrNil ++ explicitFeatures ++ additionalDependencyFeatures;
2643
2644 /* Sorts and removes duplicates from a list of strings. */
2645 sortedUnique = features:
2646 assert (builtins.isList features);
2647 assert (builtins.all builtins.isString features);
2648 let
2649 outFeaturesSet = lib.foldl (set: feature: set // { "${feature}" = 1; }) {} features;
2650 outFeaturesUnique = builtins.attrNames outFeaturesSet;
2651 in
2652 builtins.sort (a: b: a < b) outFeaturesUnique;
2653
2654 deprecationWarning = message: value:
2655 if strictDeprecation
2656 then builtins.throw "strictDeprecation enabled, aborting: ${message}"
2657 else builtins.trace message value;
2658
2659 #
2660 # crate2nix/default.nix (excerpt end)
2661 #
2662
2663 };
2664}
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000..3eb3ef1
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,16 @@
1[package]
2name = "hedge"
3version = "0.1.0"
4authors = ["Akshay <[email protected]>"]
5edition = "2018"
6
7# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8
9[dependencies]
10hyper = "0.13"
11tokio = { version = "0.2", features = ["full"] }
12pretty_env_logger = "0.4"
13futures-util = "0.3.5"
14rusqlite = "0.24.0"
15nanoid = "0.3.0"
16url = "2.1.1"
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..fcc28fa
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,4 @@
1{ pkgs ? import ./nix/nixpkgs.nix }:
2
3let cargoNix = pkgs.callPackage ./Cargo.nix {};
4in cargoNix.rootCrate.build
diff --git a/nix/nixpkgs.nix b/nix/nixpkgs.nix
new file mode 100644
index 0000000..b5675fb
--- /dev/null
+++ b/nix/nixpkgs.nix
@@ -0,0 +1,27 @@
1
2let
3 # Manage this with https://github.com/nmattia/niv
4 # or define { nixpkgs = ...; nixpkgs-mozilla = ...; }
5 # yourself.
6 sources = import ./sources.nix;
7
8 rustChannelsOverlay = import "${sources.nixpkgs-mozilla}/rust-overlay.nix";
9 # Useful if you also want to provide that in a nix-shell since some rust tools depend
10 # on that.
11 rustChannelsSrcOverlay = import "${sources.nixpkgs-mozilla}/rust-src-overlay.nix";
12
13in import sources.nixpkgs {
14 overlays = [
15 rustChannelsOverlay
16 rustChannelsSrcOverlay
17 (self: super: {
18 # Replace "latest.rustChannels.stable" with the version of the rust tools that
19 # you would like. Look at the documentation of nixpkgs-mozilla for examples.
20 #
21 # NOTE: "rust" instead of "rustc" is not a typo: It will include more than needed
22 # but also the much needed "rust-std".
23 rustc = super.latest.rustChannels.stable.rust;
24 inherit (super.latest.rustChannels.stable) cargo rust rust-fmt rust-std clippy;
25 })
26 ];
27 }
diff --git a/nix/sources.json b/nix/sources.json
new file mode 100644
index 0000000..0f22db7
--- /dev/null
+++ b/nix/sources.json
@@ -0,0 +1,50 @@
1{
2 "httpie": {
3 "branch": "master",
4 "description": "As easy as /aitch-tee-tee-pie/ 🥧 Modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. https://twitter.com/clihttp",
5 "homepage": "https://httpie.org",
6 "owner": "httpie",
7 "repo": "httpie",
8 "rev": "100872b5cf493b355453a9dff89f39b0c124d524",
9 "sha256": "10raamh8ri4b4ir17avvlm5ckaly3755555is14glnfj70sdf25g",
10 "type": "tarball",
11 "url": "https://github.com/httpie/httpie/archive/100872b5cf493b355453a9dff89f39b0c124d524.tar.gz",
12 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
13 },
14 "niv": {
15 "branch": "master",
16 "description": "Easy dependency management for Nix projects",
17 "homepage": "https://github.com/nmattia/niv",
18 "owner": "nmattia",
19 "repo": "niv",
20 "rev": "89ae775e9dfc2571f912156dd2f8627e14d4d507",
21 "sha256": "0ssw6byyn79fpyzswi28s5b85x66xh4xsfhmcfl5mkdxxpmyy0ns",
22 "type": "tarball",
23 "url": "https://github.com/nmattia/niv/archive/89ae775e9dfc2571f912156dd2f8627e14d4d507.tar.gz",
24 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
25 },
26 "nixpkgs": {
27 "branch": "nixos-20.03",
28 "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
29 "homepage": "https://github.com/NixOS/nixpkgs",
30 "owner": "NixOS",
31 "repo": "nixpkgs-channels",
32 "rev": "64fec31a24b50c774cdc45d4d7fa8d29b79dc165",
33 "sha256": "101vn3lf87xl9wbhc5qn1xmh13d3dpcass536c960fs3ghanf0h3",
34 "type": "tarball",
35 "url": "https://github.com/NixOS/nixpkgs-channels/archive/64fec31a24b50c774cdc45d4d7fa8d29b79dc165.tar.gz",
36 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
37 },
38 "nixpkgs-mozilla": {
39 "branch": "master",
40 "description": "mozilla related nixpkgs (extends nixos/nixpkgs repo)",
41 "homepage": null,
42 "owner": "mozilla",
43 "repo": "nixpkgs-mozilla",
44 "rev": "efda5b357451dbb0431f983cca679ae3cd9b9829",
45 "sha256": "11wqrg86g3qva67vnk81ynvqyfj0zxk83cbrf0p9hsvxiwxs8469",
46 "type": "tarball",
47 "url": "https://github.com/mozilla/nixpkgs-mozilla/archive/efda5b357451dbb0431f983cca679ae3cd9b9829.tar.gz",
48 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
49 }
50}
diff --git a/nix/sources.nix b/nix/sources.nix
new file mode 100644
index 0000000..8a725cb
--- /dev/null
+++ b/nix/sources.nix
@@ -0,0 +1,134 @@
1# This file has been generated by Niv.
2
3let
4
5 #
6 # The fetchers. fetch_<type> fetches specs of type <type>.
7 #
8
9 fetch_file = pkgs: spec:
10 if spec.builtin or true then
11 builtins_fetchurl { inherit (spec) url sha256; }
12 else
13 pkgs.fetchurl { inherit (spec) url sha256; };
14
15 fetch_tarball = pkgs: spec:
16 if spec.builtin or true then
17 builtins_fetchTarball { inherit (spec) url sha256; }
18 else
19 pkgs.fetchzip { inherit (spec) url sha256; };
20
21 fetch_git = spec:
22 builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; };
23
24 fetch_builtin-tarball = spec:
25 builtins.trace
26 ''
27 WARNING:
28 The niv type "builtin-tarball" will soon be deprecated. You should
29 instead use `builtin = true`.
30
31 $ niv modify <package> -a type=tarball -a builtin=true
32 ''
33 builtins_fetchTarball { inherit (spec) url sha256; };
34
35 fetch_builtin-url = spec:
36 builtins.trace
37 ''
38 WARNING:
39 The niv type "builtin-url" will soon be deprecated. You should
40 instead use `builtin = true`.
41
42 $ niv modify <package> -a type=file -a builtin=true
43 ''
44 (builtins_fetchurl { inherit (spec) url sha256; });
45
46 #
47 # Various helpers
48 #
49
50 # The set of packages used when specs are fetched using non-builtins.
51 mkPkgs = sources:
52 let
53 sourcesNixpkgs =
54 import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) {};
55 hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
56 hasThisAsNixpkgsPath = <nixpkgs> == ./.;
57 in
58 if builtins.hasAttr "nixpkgs" sources
59 then sourcesNixpkgs
60 else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then
61 import <nixpkgs> {}
62 else
63 abort
64 ''
65 Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
66 add a package called "nixpkgs" to your sources.json.
67 '';
68
69 # The actual fetching function.
70 fetch = pkgs: name: spec:
71
72 if ! builtins.hasAttr "type" spec then
73 abort "ERROR: niv spec ${name} does not have a 'type' attribute"
74 else if spec.type == "file" then fetch_file pkgs spec
75 else if spec.type == "tarball" then fetch_tarball pkgs spec
76 else if spec.type == "git" then fetch_git spec
77 else if spec.type == "builtin-tarball" then fetch_builtin-tarball spec
78 else if spec.type == "builtin-url" then fetch_builtin-url spec
79 else
80 abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
81
82 # Ports of functions for older nix versions
83
84 # a Nix version of mapAttrs if the built-in doesn't exist
85 mapAttrs = builtins.mapAttrs or (
86 f: set: with builtins;
87 listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
88 );
89
90 # fetchTarball version that is compatible between all the versions of Nix
91 builtins_fetchTarball = { url, sha256 }@attrs:
92 let
93 inherit (builtins) lessThan nixVersion fetchTarball;
94 in
95 if lessThan nixVersion "1.12" then
96 fetchTarball { inherit url; }
97 else
98 fetchTarball attrs;
99
100 # fetchurl version that is compatible between all the versions of Nix
101 builtins_fetchurl = { url, sha256 }@attrs:
102 let
103 inherit (builtins) lessThan nixVersion fetchurl;
104 in
105 if lessThan nixVersion "1.12" then
106 fetchurl { inherit url; }
107 else
108 fetchurl attrs;
109
110 # Create the final "sources" from the config
111 mkSources = config:
112 mapAttrs (
113 name: spec:
114 if builtins.hasAttr "outPath" spec
115 then abort
116 "The values in sources.json should not have an 'outPath' attribute"
117 else
118 spec // { outPath = fetch config.pkgs name spec; }
119 ) config.sources;
120
121 # The "config" used by the fetchers
122 mkConfig =
123 { sourcesFile ? ./sources.json
124 , sources ? builtins.fromJSON (builtins.readFile sourcesFile)
125 , pkgs ? mkPkgs sources
126 }: rec {
127 # The sources, i.e. the attribute set of spec name to spec
128 inherit sources;
129
130 # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
131 inherit pkgs;
132 };
133in
134mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); }
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000..580f53e
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,15 @@
1{
2 nixpkgs ? ./nix/nixpkgs.nix
3 , pkgs ? import nixpkgs
4}:
5
6pkgs.mkShell {
7 buildInputs = [
8 pkgs.cargo
9 pkgs.rustc
10 pkgs.git
11 pkgs.shellcheck
12 pkgs.sqlite
13 pkgs.httpie
14 ];
15}
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..801da3c
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,97 @@
1use futures_util::TryStreamExt;
2use hyper::service::{make_service_fn, service_fn};
3use hyper::{Body, Method, Request, Response, Server, StatusCode};
4use nanoid::nanoid;
5use rusqlite::{params, Connection, OpenFlags, Result, NO_PARAMS};
6use url::form_urlencoded;
7
8use std::collections::HashMap;
9use std::path::{Path, PathBuf};
10use std::str::from_utf8;
11
12fn shorten<S: AsRef<str>>(url: S, conn: &mut Connection) -> Result<String> {
13 let mut stmt = conn.prepare("select * from urls where link = ?1")?;
14 let mut rows = stmt.query(params![url.as_ref().to_string()])?;
15 if let Some(row) = rows.next()? {
16 return row.get(1);
17 } else {
18 let new_id = nanoid!(4);
19 conn.execute(
20 "insert into urls (link, shortlink) values (?1, ?2)",
21 params![url.as_ref().to_string(), new_id],
22 )?;
23 return Ok(new_id);
24 }
25}
26
27fn get_link<S: AsRef<str>>(url: S, conn: &mut Connection) -> Result<Option<String>> {
28 eprintln!("{}", url.as_ref());
29 let url = url.as_ref();
30 let mut stmt = conn.prepare("select * from urls where shortlink = ?1")?;
31 let mut rows = stmt.query(params![url.to_string()])?;
32 if let Some(row) = rows.next()? {
33 return Ok(row.get(0)?);
34 } else {
35 return Ok(None);
36 }
37}
38
39async fn shortner_service(req: Request<Body>) -> Result<Response<Body>, hyper::Error> {
40 let mut conn = init_db("./urls.db_3").unwrap();
41
42 match req.method() {
43 &Method::POST => {
44 let b = hyper::body::to_bytes(req).await?;
45 let params = form_urlencoded::parse(b.as_ref())
46 .into_owned()
47 .collect::<HashMap<String, String>>();
48
49 if let Some(n) = params.get("shorten") {
50 let shortlink = shorten(n, &mut conn).unwrap();
51 return Ok(Response::new(Body::from(shortlink)));
52 } else {
53 return Ok(Response::new(Body::from("invalid form")));
54 };
55 }
56 &Method::GET => {
57 let shortlink = req.uri().path().to_string();
58 let link = get_link(&shortlink[1..], &mut conn);
59 if let Some(l) = link.unwrap() {
60 return Ok(Response::new(Body::from(l)));
61 } else {
62 return Ok(Response::new(Body::from("not found!")));
63 }
64 }
65 _ => unimplemented!(),
66 }
67}
68
69fn init_db<P: AsRef<Path>>(p: P) -> Result<Connection> {
70 let conn = Connection::open_with_flags(
71 p,
72 OpenFlags::SQLITE_OPEN_CREATE | OpenFlags::SQLITE_OPEN_READ_WRITE,
73 )?;
74 conn.execute(
75 "CREATE TABLE IF NOT EXISTS urls (
76 link TEXT PRIMARY KEY,
77 shortlink TEXT NOT NULL
78 )",
79 params![],
80 )?;
81 return Ok(conn);
82}
83
84#[tokio::main]
85async fn main() -> Result<()> {
86 let addr = ([127, 0, 0, 1], 3000).into();
87
88 let service =
89 make_service_fn(|_| async { Ok::<_, hyper::Error>(service_fn(shortner_service)) });
90
91 let server = Server::bind(&addr).serve(service);
92
93 println!("Listening on http://{}", addr);
94
95 server.await.unwrap();
96 Ok(())
97}