From cf591198a0cf876559a5c88bcb387eef2c57082a Mon Sep 17 00:00:00 2001 From: Dmitry Date: Thu, 10 Nov 2022 21:43:15 +0300 Subject: [PATCH] separate lib --- Cargo.lock | 153 +++++++++++++++------------ Cargo.toml | 34 +----- app/Cargo.toml | 27 +++++ {benches => app/benches}/db_bench.rs | 5 +- {src => app/src}/main.rs | 12 +-- lib/Cargo.toml | 22 ++++ {src => lib/src}/db.rs | 6 +- lib/src/lib.rs | 3 + {src => lib/src}/questions.rs | 0 {src => lib/src}/source.rs | 0 10 files changed, 151 insertions(+), 111 deletions(-) create mode 100644 app/Cargo.toml rename {benches => app/benches}/db_bench.rs (97%) rename {src => app/src}/main.rs (98%) create mode 100644 lib/Cargo.toml rename {src => lib/src}/db.rs (98%) create mode 100644 lib/src/lib.rs rename {src => lib/src}/questions.rs (100%) rename {src => lib/src}/source.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 437d20f..db33d15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -54,9 +54,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64ct" @@ -106,9 +106,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.11.0" +version = "3.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" [[package]] name = "byteorder" @@ -145,9 +145,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f" dependencies = [ "jobserver", ] @@ -169,13 +169,27 @@ name = "chgk_ledb" version = "0.1.0" dependencies = [ "bincode", + "chgk_ledb_lib", "clap", "criterion", "ledb", "ledb-derive", "ledb-types", - "memmap", "rand", + "serde_json", + "tempfile", + "zip", +] + +[[package]] +name = "chgk_ledb_lib" +version = "0.1.0" +dependencies = [ + "bincode", + "ledb", + "ledb-derive", + "ledb-types", + "memmap", "serde", "serde_derive", "serde_json", @@ -222,9 +236,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.22" +version = "3.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" +checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" dependencies = [ "atty", "bitflags 1.3.2", @@ -355,12 +369,11 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" dependencies = [ "cfg-if 1.0.0", - "once_cell", ] [[package]] @@ -407,9 +420,9 @@ dependencies = [ [[package]] name = "dunce" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453440c271cf5577fd2a40e4942540cb7d0d2f85e27c8d07dd0023c925a67541" +checksum = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c" [[package]] name = "either" @@ -454,9 +467,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if 1.0.0", "libc", @@ -529,15 +542,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" [[package]] name = "jobserver" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" dependencies = [ "libc", ] @@ -598,9 +611,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.132" +version = "0.2.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" [[package]] name = "liblmdb-sys" @@ -678,28 +691,19 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" dependencies = [ "hermit-abi", "libc", ] -[[package]] -name = "num_threads" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" -dependencies = [ - "libc", -] - [[package]] name = "once_cell" -version = "1.14.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" [[package]] name = "oorandom" @@ -725,9 +729,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.3.0" +version = "6.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" +checksum = "3baf96e39c5359d2eb0dd6ccb42c62b91d9678aa68160d261b9e0ccbf9e9dea9" [[package]] name = "password-hash" @@ -754,9 +758,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "plotters" @@ -788,9 +792,9 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-error" @@ -818,9 +822,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.43" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" dependencies = [ "unicode-ident", ] @@ -910,9 +914,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" dependencies = [ "aho-corasick", "memchr", @@ -921,9 +925,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "remove_dir_all" @@ -968,9 +972,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "serde" -version = "1.0.144" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" dependencies = [ "serde_derive", ] @@ -987,9 +991,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.144" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" dependencies = [ "proc-macro2", "quote", @@ -998,9 +1002,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.85" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" +checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" dependencies = [ "itoa", "ryu", @@ -1049,9 +1053,9 @@ checksum = "171758edb47aa306a78dfa4ab9aeb5167405bd4e3dc2b64e88f6a84bbe98bd63" [[package]] name = "syn" -version = "1.0.99" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" +checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" dependencies = [ "proc-macro2", "quote", @@ -1083,24 +1087,24 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53f98874615aea268107765aa1ed8f6116782501d18e53d08b471733bea6c85" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b463991b4eab2d801e724172285ec4195c650e8ec79b149e6c2a8e6dd3f783" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" dependencies = [ "proc-macro2", "quote", @@ -1109,21 +1113,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.14" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3f9a28b618c3a6b9251b6908e9c99e04b9e5c02e6581ccbb67d59c34ef7f9b" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ "itoa", - "libc", - "num_threads", + "serde", + "time-core", "time-macros", ] [[package]] -name = "time-macros" -version = "0.2.4" +name = "time-core" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] [[package]] name = "tinytemplate" @@ -1143,9 +1156,9 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "unicode-ident" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" [[package]] name = "version_check" diff --git a/Cargo.toml b/Cargo.toml index c79dbff..71609d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,32 +1,8 @@ -[package] -name = "chgk_ledb" -version = "0.1.0" -authors = ["Dmitry "] -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[[bench]] -name = "db_bench" -harness = false - -[dependencies] -serde="1.0" -serde_derive="1.0" -serde_json="1.0" -ledb = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb"} -ledb-derive = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb-derive"} -ledb-types = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb-types"} -zip="0.6" -rand="0.8" -clap = { version = "3.2.22", features = ["derive"] } -bincode = "^2.0.0-rc.2" -zstd = "^0.10" -memmap = "0.7.0" - -[dev-dependencies] -criterion = "0.4.0" -tempfile = "3.3" +[workspace] +members = [ + "app", + "lib" +] [profile.release] opt-level = 3 diff --git a/app/Cargo.toml b/app/Cargo.toml new file mode 100644 index 0000000..5a860a7 --- /dev/null +++ b/app/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "chgk_ledb" +version = "0.1.0" +authors = ["Dmitry "] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[[bench]] +name = "db_bench" +harness = false + +[dependencies] +chgk_ledb_lib = {path = "../lib"} +serde_json="1.0" +ledb = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb"} +zip="0.6" +rand="0.8" +clap = { version = "3.2.22", features = ["derive"] } + +[dev-dependencies] +criterion = "0.4.0" +tempfile = "3.3" +bincode = "^2.0.0-rc.2" +ledb = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb"} +ledb-derive = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb-derive"} +ledb-types = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb-types"} diff --git a/benches/db_bench.rs b/app/benches/db_bench.rs similarity index 97% rename from benches/db_bench.rs rename to app/benches/db_bench.rs index 1259d6c..4516053 100644 --- a/benches/db_bench.rs +++ b/app/benches/db_bench.rs @@ -1,8 +1,9 @@ #[macro_use] extern crate criterion; +extern crate bincode; +extern crate tempfile; -#[path = "../src/db.rs"] -mod db; +use chgk_ledb_lib::db; use std::path::PathBuf; use db::{Reader, Writer, WriterOpts}; diff --git a/src/main.rs b/app/src/main.rs similarity index 98% rename from src/main.rs rename to app/src/main.rs index 7e058e6..af7f4eb 100644 --- a/src/main.rs +++ b/app/src/main.rs @@ -1,11 +1,5 @@ -extern crate serde; -extern crate serde_derive; #[macro_use] extern crate serde_json; -extern crate ledb; -extern crate ledb_types; -extern crate zip; - use clap::{Parser, Subcommand}; use rand::seq::IteratorRandom; @@ -16,9 +10,9 @@ use std::{fs, sync::mpsc, thread}; use ledb::{Options, Storage}; -mod db; -mod questions; -mod source; +use chgk_ledb_lib::db; +use chgk_ledb_lib::questions; +use chgk_ledb_lib::source; use crate::questions::{Question, QuestionsConverter}; use crate::source::ReadSourceQuestionsBatches; diff --git a/lib/Cargo.toml b/lib/Cargo.toml new file mode 100644 index 0000000..a67d49a --- /dev/null +++ b/lib/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "chgk_ledb_lib" +version = "0.1.0" +authors = ["Dmitry "] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde="1.0" +serde_derive="1.0" +serde_json="1.0" +ledb = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb"} +ledb-derive = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb-derive"} +ledb-types = {git = "https://github.com/b4tman/ledb.git", rev="a646b90e", package="ledb-types"} +zip="0.6" +bincode = "^2.0.0-rc.2" +zstd = "^0.10" +memmap = "0.7.0" + +[dev-dependencies] +tempfile = "3.3" diff --git a/src/db.rs b/lib/src/db.rs similarity index 98% rename from src/db.rs rename to lib/src/db.rs index ad113ca..f8d9b27 100644 --- a/src/db.rs +++ b/lib/src/db.rs @@ -186,6 +186,10 @@ where self.count } + pub fn is_empty(&self) -> bool { + 0 == self.len() + } + pub fn get(&mut self, index: usize) -> Result { if index >= self.len() { return Err("index out of range".into()); @@ -250,7 +254,7 @@ where type Item = T; fn next(&mut self) -> Option { - if self.index.is_none() && self.reader.len() != 0 { + if self.index.is_none() && !self.reader.is_empty() { self.index = Some(0); } diff --git a/lib/src/lib.rs b/lib/src/lib.rs new file mode 100644 index 0000000..b1ff844 --- /dev/null +++ b/lib/src/lib.rs @@ -0,0 +1,3 @@ +pub mod db; +pub mod questions; +pub mod source; diff --git a/src/questions.rs b/lib/src/questions.rs similarity index 100% rename from src/questions.rs rename to lib/src/questions.rs diff --git a/src/source.rs b/lib/src/source.rs similarity index 100% rename from src/source.rs rename to lib/src/source.rs