diff --git a/Cargo.lock b/Cargo.lock index 9e50f70..73e921c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -55,12 +55,38 @@ dependencies = [ "syn", ] +[[package]] +name = "async-trait" +version = "0.1.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atoi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616896e05fc0e2649463a93a15183c6a16bf03413a7af88ef1285ddedfa9cda5" +dependencies = [ + "num-traits", +] + [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + [[package]] name = "bincode" version = "1.3.3" @@ -76,12 +102,33 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" + [[package]] name = "byte-slice-cast" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067e" +[[package]] +name = "bytemuck" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc" + [[package]] name = "byteorder" version = "1.4.3" @@ -100,6 +147,12 @@ version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" @@ -115,13 +168,47 @@ dependencies = [ "cc", ] +[[package]] +name = "combine" +version = "4.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a604e93b79d1808327a6fca85a6f2d69de66461e7620f5a4cbf5fb4d1d7c948" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "cpufeatures" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403" + [[package]] name = "crc32fast" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -130,8 +217,8 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" dependencies = [ - "cfg-if", - "crossbeam-utils", + "cfg-if 1.0.0", + "crossbeam-utils 0.8.8", ] [[package]] @@ -140,9 +227,9 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "crossbeam-epoch", - "crossbeam-utils", + "crossbeam-utils 0.8.8", ] [[package]] @@ -152,29 +239,105 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" dependencies = [ "autocfg", - "cfg-if", - "crossbeam-utils", + "cfg-if 1.0.0", + "crossbeam-utils 0.8.8", "lazy_static", "memoffset", "scopeguard", ] +[[package]] +name = "crossbeam-queue" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" +dependencies = [ + "crossbeam-utils 0.6.6", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils 0.8.8", +] + +[[package]] +name = "crossbeam-utils" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" +dependencies = [ + "cfg-if 0.1.10", + "lazy_static", +] + [[package]] name = "crossbeam-utils" version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "lazy_static", ] +[[package]] +name = "crypto-common" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + [[package]] name = "either" version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "event-listener" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" + +[[package]] +name = "fastrand" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +dependencies = [ + "instant", +] + [[package]] name = "flexbuffers" version = "2.0.0" @@ -188,6 +351,28 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "flume" +version = "0.10.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843c03199d0c0ca54bc1ea90ac0d507274c28abcc4f691ae8b4eaa375087c76a" +dependencies = [ + "futures-core", + "futures-sink", + "pin-project", + "spin 0.9.3", +] + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + [[package]] name = "fs2" version = "0.4.3" @@ -240,6 +425,17 @@ dependencies = [ "futures-util", ] +[[package]] +name = "futures-intrusive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62007592ac46aa7c2b6416f7deb9a8a8f63a01e0f1d6e1787d5630170db2b63e" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + [[package]] name = "futures-io" version = "0.3.21" @@ -296,13 +492,23 @@ dependencies = [ "byteorder", ] +[[package]] +name = "generic-array" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "getrandom" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi 0.10.2+wasi-snapshot-preview1", ] @@ -316,13 +522,22 @@ dependencies = [ "ahash", ] +[[package]] +name = "hashlink" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +dependencies = [ + "hashbrown", +] + [[package]] name = "hdf5" version = "0.8.1" source = "git+https://github.com/magnusuMET/hdf5-rust?branch=hidefix#038eb65aea4cc52cad26d176e3b17b796c749da3" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.0", "hdf5-derive", "hdf5-sys", "hdf5-types", @@ -375,11 +590,59 @@ version = "0.8.1" source = "git+https://github.com/magnusuMET/hdf5-rust?branch=hidefix#038eb65aea4cc52cad26d176e3b17b796c749da3" dependencies = [ "ascii", - "cfg-if", + "cfg-if 1.0.0", "hdf5-sys", "libc", ] +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heed" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "269c7486ed6def5d7b59a427cec3e87b4d4dd4381d01e21c8c9f2d3985688392" +dependencies = [ + "bytemuck", + "byteorder", + "heed-traits", + "heed-types", + "libc", + "lmdb-rkv-sys", + "once_cell", + "page_size", + "serde", + "synchronoise", + "url", +] + +[[package]] +name = "heed-traits" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53a94e5b2fd60417e83ffdfe136c39afacff0d4ac1d8d01cd66928ac610e1a2" + +[[package]] +name = "heed-types" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a6cf0a6952fcedc992602d5cddd1e3fff091fbe87d38636e3ec23a31f32acbd" +dependencies = [ + "bincode", + "bytemuck", + "byteorder", + "heed-traits", + "serde", + "serde_json", +] + [[package]] name = "hermit-abi" version = "0.1.19" @@ -389,6 +652,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "hidefix" version = "0.5.2" @@ -406,6 +675,7 @@ dependencies = [ "hdf5", "hdf5-src", "hdf5-sys", + "heed", "itertools", "libc", "libdeflater", @@ -414,22 +684,46 @@ dependencies = [ "ndarray", "rand", "rayon", + "redis", "serde", "serde_bytes", "sled", + "sqlx", "strength_reduce", + "tempfile", "tokio", "tokio-uring", "zerocopy", ] +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee" +dependencies = [ + "autocfg", + "hashbrown", +] + [[package]] name = "instant" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -451,6 +745,27 @@ dependencies = [ "either", ] +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" + +[[package]] +name = "js-sys" +version = "0.3.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" +dependencies = [ + "wasm-bindgen", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -487,10 +802,21 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "winapi", ] +[[package]] +name = "libsqlite3-sys" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "898745e570c7d0453cc1fbc4a701eb6c662ed54e8fec8b7d14be137ebeeb9d14" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "libz-sys" version = "1.1.6" @@ -503,6 +829,17 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "lmdb-rkv-sys" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b9ce6b3be08acefa3003c57b7565377432a89ec24476bbe72e11d101f852fe" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + [[package]] name = "lock_api" version = "0.4.7" @@ -519,7 +856,7 @@ version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -531,6 +868,12 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + [[package]] name = "matrixmultiply" version = "0.3.2" @@ -555,6 +898,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "mio" version = "0.8.2" @@ -591,6 +940,16 @@ dependencies = [ "rawpointer", ] +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "ntapi" version = "0.3.7" @@ -665,6 +1024,16 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" +[[package]] +name = "page_size" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "parking_lot" version = "0.11.2" @@ -692,7 +1061,7 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "instant", "libc", "redox_syscall", @@ -719,6 +1088,32 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pin-project" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "pin-project-lite" version = "0.2.9" @@ -850,10 +1245,25 @@ checksum = "9f51245e1e62e1f1629cbfec37b5793bbabcaeb90f30e94d2ba03564687353e4" dependencies = [ "crossbeam-channel", "crossbeam-deque", - "crossbeam-utils", + "crossbeam-utils 0.8.8", "num_cpus", ] +[[package]] +name = "redis" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a80b5f38d7f5a020856a0e16e40a9cfabf88ae8f0e4c2dcd8a3114c1e470852" +dependencies = [ + "async-trait", + "combine", + "dtoa", + "itoa 0.4.8", + "percent-encoding", + "sha1", + "url", +] + [[package]] name = "redox_syscall" version = "0.2.13" @@ -880,6 +1290,49 @@ version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rustls" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +dependencies = [ + "base64", + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "ryu" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" + [[package]] name = "scoped-tls" version = "1.0.0" @@ -892,6 +1345,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "sct" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "serde" version = "1.0.137" @@ -921,6 +1384,43 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_json" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +dependencies = [ + "itoa 1.0.1", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + +[[package]] +name = "sha2" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest", +] + [[package]] name = "slab" version = "0.4.6" @@ -935,7 +1435,7 @@ checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935" dependencies = [ "crc32fast", "crossbeam-epoch", - "crossbeam-utils", + "crossbeam-utils 0.8.8", "fs2", "fxhash", "libc", @@ -959,12 +1459,133 @@ dependencies = [ "winapi", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c530c2b0d0bf8b69304b39fe2001993e267461948b890cd037d8ad4293fa1a0d" +dependencies = [ + "lock_api", +] + +[[package]] +name = "sqlformat" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b7922be017ee70900be125523f38bdd644f4f06a1b16e8fa5a8ee8c34bffd4" +dependencies = [ + "itertools", + "nom", + "unicode_categories", +] + +[[package]] +name = "sqlx" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551873805652ba0d912fec5bbb0f8b4cdd96baf8e2ebf5970e5671092966019b" +dependencies = [ + "sqlx-core", + "sqlx-macros", +] + +[[package]] +name = "sqlx-core" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c61941ccf5ddcada342cd59e3e5173b007c509e1e8e990dafc830294d9dc5" +dependencies = [ + "ahash", + "atoi", + "bitflags", + "byteorder", + "bytes", + "crc", + "crossbeam-queue 0.3.5", + "either", + "event-listener", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "hashlink", + "hex", + "indexmap", + "itoa 1.0.1", + "libc", + "libsqlite3-sys", + "log", + "memchr", + "once_cell", + "paste", + "percent-encoding", + "rustls", + "sha2", + "smallvec", + "sqlformat", + "sqlx-rt", + "stringprep", + "thiserror", + "tokio-stream", + "url", + "webpki", + "webpki-roots", +] + +[[package]] +name = "sqlx-macros" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0fba2b0cae21fc00fe6046f8baa4c7fcb49e379f0f592b04696607f69ed2e1" +dependencies = [ + "dotenv", + "either", + "heck", + "once_cell", + "proc-macro2", + "quote", + "sha2", + "sqlx-core", + "sqlx-rt", + "syn", + "url", +] + +[[package]] +name = "sqlx-rt" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db708cd3e459078f85f39f96a00960bd841f66ee2a669e90bf36907f5a79aae" +dependencies = [ + "once_cell", + "tokio", + "tokio-rustls", +] + [[package]] name = "strength_reduce" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3ff2f71c82567c565ba4b3009a9350a96a7269eaa4001ebedae926230bc2254" +[[package]] +name = "stringprep" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "syn" version = "1.0.92" @@ -976,6 +1597,15 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "synchronoise" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d717ed0efc9d39ab3b642a096bc369a3e02a38a51c41845d7fe31bdad1d6eaeb" +dependencies = [ + "crossbeam-queue 0.1.2", +] + [[package]] name = "synstructure" version = "0.12.6" @@ -988,6 +1618,20 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + [[package]] name = "thiserror" version = "1.0.31" @@ -1008,13 +1652,30 @@ dependencies = [ "syn", ] +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + [[package]] name = "tokio" version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dce653fb475565de9f6fb0614b28bca8df2c430c0cf84bcd9c843f15de5414cc" dependencies = [ + "bytes", "libc", + "memchr", "mio", "num_cpus", "once_cell", @@ -1035,6 +1696,28 @@ dependencies = [ "syn", ] +[[package]] +name = "tokio-rustls" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-stream" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-uring" version = "0.3.0" @@ -1058,12 +1741,63 @@ dependencies = [ "serde", ] +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-normalization" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" + [[package]] name = "unicode-xid" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", +] + [[package]] name = "vcpkg" version = "0.2.15" @@ -1088,6 +1822,89 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasm-bindgen" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" + +[[package]] +name = "web-sys" +version = "0.3.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" +dependencies = [ + "webpki", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index 4f28fe6..a85feef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,10 +41,14 @@ features = ["sync", "macros", "rt-multi-thread"] version = "1" [dev-dependencies] +heed = "0.11.0" ndarray = "0.15" rand = "0.8" rayon = "1.5.0" +redis = "0.21.5" sled = "0.34.6" +sqlx = { version = "0.5", features = [ "macros", "sqlite", "runtime-tokio-rustls" ] } +tempfile = "3.3.0" [patch.crates-io] hdf5 = { git = "https://github.com/magnusuMET/hdf5-rust", branch = "hidefix" } diff --git a/benches/index.rs b/benches/index.rs index 0b55717..f1e32e5 100644 --- a/benches/index.rs +++ b/benches/index.rs @@ -8,3 +8,9 @@ use hidefix::idx::Index; fn chunked_1d(b: &mut Bencher) { b.iter(|| Index::index("tests/data/dmrpp/chunked_oneD.h5").unwrap()) } + +#[ignore] +#[bench] +fn meps(b: &mut Bencher) { + b.iter(|| test::black_box(Index::index("tests/data/meps_det_vc_2_5km_latest.nc")).unwrap()) +} diff --git a/benches/serde_db.rs b/benches/serde_db.rs new file mode 100644 index 0000000..2efed59 --- /dev/null +++ b/benches/serde_db.rs @@ -0,0 +1,340 @@ +#![feature(test)] +extern crate test; +use tempfile::{NamedTempFile, TempDir}; +use test::Bencher; + +use hidefix::idx::{DatasetD, Index}; + +mod serde_db_sled { + use super::*; + + #[ignore] + #[bench] + fn deserialize_meps_bincode_db_sled(b: &mut Bencher) { + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + + let bts = bincode::serialize(&i).unwrap(); + + let db = sled::Config::default() + .temporary(true) + .print_profile_on_drop(true) + .open() + .unwrap(); + + db.insert("meps", bts).unwrap(); + + b.iter(|| { + let bts = db.get("meps").unwrap().unwrap(); + test::black_box(bincode::deserialize::(&bts).unwrap()); + }) + } + + #[ignore] + #[bench] + fn deserialize_meps_bincode_only_read(b: &mut Bencher) { + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + + let bts = bincode::serialize(&i).unwrap(); + + let db = sled::Config::default() + .temporary(true) + .print_profile_on_drop(true) + .open() + .unwrap(); + + db.insert("meps", bts).unwrap(); + + b.iter(|| { + test::black_box(db.get("meps").unwrap().unwrap()); + }) + } +} + +mod serde_db_sqlite { + use super::*; + use sqlx::SqlitePool; + + #[ignore] + #[bench] + fn deserialize_meps_bincode_only_read(b: &mut Bencher) { + let rt = tokio::runtime::Runtime::new().unwrap(); + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + + let bts = bincode::serialize(&i).unwrap(); + + println!("serialized size: {}", bts.len()); + + let db = NamedTempFile::new().unwrap(); + + let pool = rt.block_on(async { + let pool = SqlitePool::connect(&format!("sqlite:{}", db.path().to_str().unwrap())) + .await + .unwrap(); + let mut c = pool.acquire().await.unwrap(); + + sqlx::query("CREATE TABLE hdf5 (dataset TEXT, idx BLOB)") + .execute(&mut c) + .await + .unwrap(); + sqlx::query("CREATE INDEX dataset_idx ON hdf5 (dataset)") + .execute(&mut c) + .await + .unwrap(); + + // Insert index into db + sqlx::query("INSERT INTO hdf5 (dataset, idx) VALUES (?1, ?2)") + .bind("meps") + .bind(&bts) + .execute(&mut c) + .await + .unwrap(); + + pool + }); + + b.iter(|| { + let (_nbts,): (Vec,) = test::black_box( + rt.block_on( + sqlx::query_as("SELECT idx FROM hdf5 WHERE dataset = ?1") + .bind("meps") + .fetch_one(&pool), + ) + .unwrap(), + ); + // assert_eq!(&bts, &nbts); + + // let bts = rt.block_on(async { test::black_box(Vec::::with_capacity(8_000_000)) }); + }) + } + + #[ignore] + #[bench] + fn deserialize_meps_bincode_only_read_x_wind_ml(b: &mut Bencher) { + let rt = tokio::runtime::Runtime::new().unwrap(); + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + let d = i.dataset("x_wind_ml").unwrap(); + + let bts = bincode::serialize(d).unwrap(); + + println!("serialized size: {}", bts.len()); + + let db = NamedTempFile::new().unwrap(); + + let pool = rt.block_on(async { + let pool = SqlitePool::connect(&format!("sqlite:{}", db.path().to_str().unwrap())) + .await + .unwrap(); + let mut c = pool.acquire().await.unwrap(); + + sqlx::query("CREATE TABLE hdf5 (dataset TEXT, idx BLOB)") + .execute(&mut c) + .await + .unwrap(); + sqlx::query("CREATE INDEX dataset_idx ON hdf5 (dataset)") + .execute(&mut c) + .await + .unwrap(); + + // Insert index into db + sqlx::query("INSERT INTO hdf5 (dataset, idx) VALUES (?1, ?2)") + .bind("meps") + .bind(&bts) + .execute(&mut c) + .await + .unwrap(); + + pool + }); + + b.iter(|| { + let (_nbts,): (Vec,) = test::black_box( + rt.block_on( + sqlx::query_as("SELECT idx FROM hdf5 WHERE dataset = ?1") + .bind("meps") + .fetch_one(&pool), + ) + .unwrap(), + ); + // assert_eq!(&bts, &nbts); + + // let bts = rt.block_on(async { test::black_box(Vec::::with_capacity(8_000_000)) }); + }) + } + + #[ignore] + #[bench] + fn deserialize_meps_bincode(b: &mut Bencher) { + let rt = tokio::runtime::Runtime::new().unwrap(); + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + + let bts = bincode::serialize(&i).unwrap(); + + println!("serialized size: {}", bts.len()); + + let db = NamedTempFile::new().unwrap(); + + let pool = rt.block_on(async { + let pool = SqlitePool::connect(&format!("sqlite:{}", db.path().to_str().unwrap())) + .await + .unwrap(); + let mut c = pool.acquire().await.unwrap(); + + sqlx::query("CREATE TABLE hdf5 (dataset TEXT, idx BLOB)") + .execute(&mut c) + .await + .unwrap(); + sqlx::query("CREATE INDEX dataset_idx ON hdf5 (dataset)") + .execute(&mut c) + .await + .unwrap(); + + // Insert index into db + sqlx::query("INSERT INTO hdf5 (dataset, idx) VALUES (?1, ?2)") + .bind("meps") + .bind(&bts) + .execute(&mut c) + .await + .unwrap(); + + pool + }); + + b.iter(|| { + let (nbts,): (Vec,) = rt + .block_on( + sqlx::query_as("SELECT idx FROM hdf5 WHERE dataset = ?1") + .bind("meps") + .fetch_one(&pool), + ) + .unwrap(); + // assert_eq!(&bts, &nbts); + test::black_box(bincode::deserialize::(&nbts).unwrap()); + }) + } +} + +mod serde_db_heed { + use super::*; + use heed::types::*; + use heed::{Database, EnvOpenOptions}; + + #[ignore] + #[bench] + fn deserialize_meps_bincode(b: &mut Bencher) { + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + + let bts = bincode::serialize(&i).unwrap(); + + let dbp = TempDir::new().unwrap(); + let env = EnvOpenOptions::new() + .map_size(10 * 1024 * 1024) + .open(dbp) + .unwrap(); + + let db: Database = env.create_database(None).unwrap(); + + let mut wtxn = env.write_txn().unwrap(); + db.put(&mut wtxn, "meps", &bts).unwrap(); + wtxn.commit().unwrap(); + + b.iter(|| { + let rtxn = env.read_txn().unwrap(); + let nbts = db.get(&rtxn, "meps").unwrap().unwrap(); + test::black_box(bincode::deserialize::(&nbts).unwrap()); + }) + } + + #[ignore] + #[bench] + fn deserialize_meps_bincode_only_read(b: &mut Bencher) { + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + + let bts = bincode::serialize(&i).unwrap(); + + let dbp = TempDir::new().unwrap(); + let env = EnvOpenOptions::new() + .map_size(1000 * 1024 * 1024) + .open(dbp) + .unwrap(); + + let db: Database = env.create_database(None).unwrap(); + + let mut wtxn = env.write_txn().unwrap(); + db.put(&mut wtxn, "meps", &bts).unwrap(); + wtxn.commit().unwrap(); + + b.iter(|| { + let rtxn = env.read_txn().unwrap(); + test::black_box(db.get(&rtxn, "meps").unwrap().unwrap()); + }) + } +} + +mod serde_db_redis { + // Requires redis: docker run --rm -p 6379:6379 redis + + use super::*; + use redis::Commands; + + #[ignore] + #[bench] + fn deserialize_meps_bincode(b: &mut Bencher) { + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + + let bts = bincode::serialize(&i).unwrap(); + println!("bytes: {}", bts.len()); + + let mut db = redis::Client::open("redis://:@127.1:6379") + .unwrap() + .get_connection() + .unwrap(); + + db.set::<_, _, ()>("meps", bts.as_slice()).unwrap(); + + b.iter(|| { + let nbts: Vec = test::black_box(db.get("meps").unwrap()); + test::black_box(bincode::deserialize::(&nbts).unwrap()); + }) + } + + #[ignore] + #[bench] + fn deserialize_meps_bincode_x_wind_ml(b: &mut Bencher) { + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + let d = i.dataset("x_wind_ml").unwrap(); + + let bts = bincode::serialize(d).unwrap(); + println!("bytes: {}", bts.len()); + + let mut db = redis::Client::open("redis://:@127.1:6379") + .unwrap() + .get_connection() + .unwrap(); + + db.set::<_, _, ()>("meps", bts.as_slice()).unwrap(); + + b.iter(|| { + let nbts: Vec = test::black_box(db.get("meps").unwrap()); + test::black_box(bincode::deserialize::(&nbts).unwrap()); + }) + } + + #[ignore] + #[bench] + fn deserialize_meps_bincode_only_read(b: &mut Bencher) { + let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); + + let bts = bincode::serialize(&i).unwrap(); + + let mut db = redis::Client::open("redis://:@127.1:6379") + .unwrap() + .get_connection() + .unwrap(); + + db.set::<_, _, ()>("meps", bts.as_slice()).unwrap(); + + b.iter(|| { + let _nbts: Vec = test::black_box(db.get("meps").unwrap()); + }) + } +} diff --git a/benches/serialize.rs b/benches/serialize.rs index f3a57d0..8080972 100644 --- a/benches/serialize.rs +++ b/benches/serialize.rs @@ -87,47 +87,6 @@ mod serde_bincode { }) } - #[ignore] - #[bench] - fn deserialize_meps_bincode_db_sled(b: &mut Bencher) { - let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); - - let bts = bincode::serialize(&i).unwrap(); - - let db = sled::Config::default() - .temporary(true) - .print_profile_on_drop(true) - .open() - .unwrap(); - - db.insert("meps", bts).unwrap(); - - b.iter(|| { - let bts = db.get("meps").unwrap().unwrap(); - test::black_box(bincode::deserialize::(&bts).unwrap()); - }) - } - - #[ignore] - #[bench] - fn deserialize_meps_bincode_db_sled_only_read(b: &mut Bencher) { - let i = Index::index("tests/data/meps_det_vc_2_5km_latest.nc").unwrap(); - - let bts = bincode::serialize(&i).unwrap(); - - let db = sled::Config::default() - .temporary(true) - .print_profile_on_drop(true) - .open() - .unwrap(); - - db.insert("meps", bts).unwrap(); - - b.iter(|| { - test::black_box(db.get("meps").unwrap().unwrap()); - }) - } - #[ignore] #[bench] fn deserialize_meps_file_only_read(b: &mut Bencher) {