From 292cd603b8658d4c3394961b0c6ad9568e58c269 Mon Sep 17 00:00:00 2001 From: wangboo <5417808+wangboa@user.noreply.gitee.com> Date: Wed, 7 Dec 2022 20:53:15 +0800 Subject: [PATCH 1/2] add doc and bootstrap codes --- Cargo.toml | 4 ++++ README.md | 5 ++++- doc/CodeStyle.md | 15 +++++++++++++++ doc/TODOList.md | 35 +++++++++++++++++++++++++++++++++++ src/db/mod.rs | 0 src/lib.rs | 13 +++++++++++++ src/main.rs | 3 --- src/table/mod.rs | 0 src/traits/iterator.rs | 24 ++++++++++++++++++++++++ src/traits/mod.rs | 4 ++++ src/util/mod.rs | 3 +++ src/util/slice.rs | 11 +++++++++++ src/util/slice_test.rs | 10 ++++++++++ src/util/status.rs | 4 ++++ 14 files changed, 127 insertions(+), 4 deletions(-) create mode 100644 doc/CodeStyle.md create mode 100644 doc/TODOList.md create mode 100644 src/db/mod.rs create mode 100644 src/lib.rs delete mode 100644 src/main.rs create mode 100644 src/table/mod.rs create mode 100644 src/traits/iterator.rs create mode 100644 src/traits/mod.rs create mode 100644 src/util/mod.rs create mode 100644 src/util/slice.rs create mode 100644 src/util/slice_test.rs create mode 100644 src/util/status.rs diff --git a/Cargo.toml b/Cargo.toml index 88264ee..7b77544 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,10 @@ name = "level_db_rust" version = "0.1.0" edition = "2021" +[lib] +name = "level_db_rust" +path = "src/lib.rs" + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] diff --git a/README.md b/README.md index a598374..2c55689 100644 --- a/README.md +++ b/README.md @@ -27,5 +27,8 @@ LevelDB for rust 4. 新建 Pull Request -#### 特技 +## TODO +[TODO和分工](doc/TODOList.md) +## 编码和git规范 +[编码和git规范](doc/CodeStyle.md) \ No newline at end of file diff --git a/doc/CodeStyle.md b/doc/CodeStyle.md new file mode 100644 index 0000000..cc05186 --- /dev/null +++ b/doc/CodeStyle.md @@ -0,0 +1,15 @@ +# 1. 规范 +1. 实现和测试分成两个文件, 实现文件 xx.rs, 测试文件 xx_test.rs +2. struct/trait 驼峰式命名, 方法 全小写下滑线命名 +3. 其它的参照 Rust 编码规范 +4. 所有方法都要求测试案例覆盖 +5. 所有方法都要求有注释 +6. 常量都要求有注释 +7. 缩写要遵循业界规范 +8. cargo不允许引用第三方库 + +# 2. 分支管理规范 +1. master作为主分支 +2. feat/xx 作为开发分支 +3. 其它人从主分支checkout分支 +4. 开发分支提交到git, 然后发起 merge_request, merge 必须超过2个人同意 \ No newline at end of file diff --git a/doc/TODOList.md b/doc/TODOList.md new file mode 100644 index 0000000..2e90c57 --- /dev/null +++ b/doc/TODOList.md @@ -0,0 +1,35 @@ +# DB +## Build / Compaction +## DB implements +## Log - WAL canghai +## Memtable - wangxu +## SkipList - wangxu +## Snapshot / VersionSet - yuanyang, zhangtao, canghai +## WriteBatch +## TableCache +# Table +## Block +## FilterBlock +## Format (encode/decode) +## Table Level Iterator (Empty / MergingIterator / TwoLevelIterator) +## Table Build +## Recovery +## SStable - canghai +# Util +## Arena (Memory Management) - wangboo +## BloomFilter - yuanyang +## Cache - wangxu +## Coding (Primitive Type SerDe) - wangxu +## Comparator - yuanyang +## CRC - canghai +## Env - canghai +## Hash - canghai +## Histgram - zhengcheng +## Logging - zhoujian +## MutexLock - zhengcheng +## Status - yuanyang +## Random - yuanyang +## Slice - wangboo +# Traits +## public trait defined in leveldb include dir +# \ No newline at end of file diff --git a/src/db/mod.rs b/src/db/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..3768322 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,13 @@ +mod db; +mod table; +mod util; +mod traits; + +mod test { + + #[test] + pub fn test() { + println!("hello world"); + } + +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index e7a11a9..0000000 --- a/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -} diff --git a/src/table/mod.rs b/src/table/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/traits/iterator.rs b/src/traits/iterator.rs new file mode 100644 index 0000000..319650a --- /dev/null +++ b/src/traits/iterator.rs @@ -0,0 +1,24 @@ +use crate::util::Slice; + +pub trait Iterator { + + fn valid(&self) -> bool; + + fn seek_to_first(&mut self); + + fn seek_to_last(&mut self); + + fn seek(&mut self, target: &Slice); + + fn next(&mut self); + + fn pre(&mut self); + + fn key(&self) -> &Slice; + + fn value(&self) -> &Slice; +} + +trait AAA { + +} diff --git a/src/traits/mod.rs b/src/traits/mod.rs new file mode 100644 index 0000000..962c0ad --- /dev/null +++ b/src/traits/mod.rs @@ -0,0 +1,4 @@ +use crate::util::Slice; + +mod iterator; + diff --git a/src/util/mod.rs b/src/util/mod.rs new file mode 100644 index 0000000..3f159e6 --- /dev/null +++ b/src/util/mod.rs @@ -0,0 +1,3 @@ +mod slice; +mod status; +mod slice_test; \ No newline at end of file diff --git a/src/util/slice.rs b/src/util/slice.rs new file mode 100644 index 0000000..da59ff7 --- /dev/null +++ b/src/util/slice.rs @@ -0,0 +1,11 @@ + +pub struct Slice { + +} + +impl Default for Slice { + fn default() -> Self { + todo!() + } +} + diff --git a/src/util/slice_test.rs b/src/util/slice_test.rs new file mode 100644 index 0000000..02d05e2 --- /dev/null +++ b/src/util/slice_test.rs @@ -0,0 +1,10 @@ + +mod test { + use crate::util::slice::Slice; + + #[test] + fn test() { + let slice = Slice::default(); + } + +} \ No newline at end of file diff --git a/src/util/status.rs b/src/util/status.rs new file mode 100644 index 0000000..ae9e509 --- /dev/null +++ b/src/util/status.rs @@ -0,0 +1,4 @@ + +pub enum Status { + +} \ No newline at end of file -- Gitee From e4b1cb2807d431181eb23b374f65b6838a927f74 Mon Sep 17 00:00:00 2001 From: fengyang Date: Wed, 7 Dec 2022 20:58:37 +0800 Subject: [PATCH 2/2] doc --- doc/TODOList.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/TODOList.md b/doc/TODOList.md index 2e90c57..d4e60bb 100644 --- a/doc/TODOList.md +++ b/doc/TODOList.md @@ -7,6 +7,7 @@ ## Snapshot / VersionSet - yuanyang, zhangtao, canghai ## WriteBatch ## TableCache + # Table ## Block ## FilterBlock @@ -15,6 +16,7 @@ ## Table Build ## Recovery ## SStable - canghai + # Util ## Arena (Memory Management) - wangboo ## BloomFilter - yuanyang @@ -30,6 +32,7 @@ ## Status - yuanyang ## Random - yuanyang ## Slice - wangboo + # Traits ## public trait defined in leveldb include dir # \ No newline at end of file -- Gitee