Parity Common 开源项目教程
1. 项目的目录结构及介绍
Parity Common 是一个包含多个子项目的仓库,每个子项目都有其独立的目录。以下是主要的目录结构及其介绍:
parity-common/
├── benches/ # 性能测试代码
├── ci/ # 持续集成配置文件
├── clippy.toml # Clippy 配置文件
├── CONTRIBUTING.md # 贡献指南
├── COPYRIGHT # 版权信息
├── Cargo.toml # 主项目 Cargo 文件
├── README.md # 项目介绍文档
├── scripts/ # 脚本文件
├── src/ # 主项目源代码
└── submodules/ # 子模块目录
├── array-bytes # 处理字节数组的库
├── bit-set # 位集合库
├── bit-vec # 位向量库
├── blob-db # Blob 数据库
├── boolean-set # 布尔集合库
├── bytes # 字节处理库
├── compact-decode # 紧凑解码库
├── compact-encode # 紧凑编码库
├── crypto-mac # 加密消息认证码库
├── derive-more # 更多派生宏
├── ethbloom # Ethereum 布隆过滤器
├── fixed-hash # 固定大小的哈希库
├── hash-db # 哈希数据库
├── kvdb # 键值数据库
├── kvdb-memorydb # 内存键值数据库
├── kvdb-rocksdb # RocksDB 键值数据库
├── memory-db # 内存数据库
├── patricia-trie # 帕特里夏树
├── primitive-types # 原始类型库
├── rand-utils # 随机工具库
├── rlp # 递归长度前缀编码
├── rustc-hex # Rustc 十六进制库
├── serde-utils # Serde 工具库
├── storage-types # 存储类型库
├── trie-db # 树数据库
└── trie-root # 树根计算库
2. 项目的启动文件介绍
Parity Common 是一个库集合,没有统一的启动文件。每个子项目都有其独立的入口点。例如,kvdb
子项目的入口点在 submodules/kvdb/src/lib.rs
。
3. 项目的配置文件介绍
Parity Common 的配置文件主要包括 Cargo.toml
和各个子项目的 Cargo.toml
。以下是主项目的 Cargo.toml
示例:
[workspace]
members = [
"submodules/array-bytes",
"submodules/bit-set",
"submodules/bit-vec",
"submodules/blob-db",
"submodules/boolean-set",
"submodules/bytes",
"submodules/compact-decode",
"submodules/compact-encode",
"submodules/crypto-mac",
"submodules/derive-more",
"submodules/ethbloom",
"submodules/fixed-hash",
"submodules/hash-db",
"submodules/kvdb",
"submodules/kvdb-memorydb",
"submodules/kvdb-rocksdb",
"submodules/memory-db",
"submodules/patricia-trie",
"submodules/primitive-types",
"submodules/rand-utils",
"submodules/rlp",
"submodules/rustc-hex",
"submodules/serde-utils",
"submodules/storage-types",
"submodules/trie-db",
"submodules/trie-root"
]
每个子项目的 Cargo.toml
文件定义了该子项目的依赖、版本和其他配置信息。例如,kvdb
子项目的 Cargo.toml
如下:
[package]
name = "kvdb"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
[dependencies]
这些配置文件确保了每个子项目可以独立编译和运行,同时也支持整个工作空间的统一管理。