An open-source implementation of Skip Graphs middleware written in Rust.
Skip Graph is a distributed data structure designed to achieve efficient search, insert, and delete operations over a dynamic peer-to-peer network. This project provides a Rust-based implementation of Skip Graph middleware, suitable for building distributed systems requiring a P2P routing overlay or distributed key-value store.
To use or contribute to this project, you need to have the following installed:
- Rust: Ensure you have Rust installed. You can download it from Rust's official website. The minimum required
version is
rustc 1.89.0 (29483883e 2025-08-04). - Cargo: Cargo is the Rust package manager and is included with the Rust installation. The minimum required version is
cargo 1.88.0 (873a06493 2025-05-10). .
Follow these steps to set up and start working on the project.
Start by cloning this repository to your local machine:
git clone github.com/thep2p/skipgraph-rust.git
cd skipgraph-rustRun the following command to install required tools and dependencies:
make install-toolsThis command will:
- Install and update Rust, if necessary.
- Install the
clippycomponent for linting.
To ensure the project runs properly, execute the test suite using:
make testThis command runs the cargo test command, executing all available unit tests to verify the implementation.
To check the code for common issues and adhere to best practices, use the following command:
make lintThis command runs cargo clippy, a linting tool for Rust projects.
If you want to extend the tooling provided by this project, add new tasks to the Makefile and group them under appropriate targets.
Contributions to this project are welcome! Feel free to fork the repository, make your changes, and submit a pull request. Ensure you follow these steps before submitting:
- Run the tests using
make test. - Lint the code using
make lint.
By following these steps, you'll help maintain the code quality and robustness of the project.
This project is under Apache 2.0 License. See the LICENSE file for more details.