The Interplanetary File System (IPFS), implemented in Rust
You can see details about what's implemented, what's not, and also learn about other ecosystem projects, at Are We IPFS Yet?
For more information about IPFS see: https://docs.ipfs.io/introduction/overview/
Rust IPFS depends on
First, install the dependencies.
$ apt-get install protobuf-compiler libssl-dev zlib1g-dev
$ yum install protobuf-compiler libssl-dev zlib1g-dev
rust-ipfs binaries can be built from source. Our goal is to always be compatible with the stable release of Rust.
$ git clone https://github.com/rs-ipfs/rust-ipfs && cd rust-ipfs $ cargo build --workspace
You will then find the binaries inside of the project root's
The project currently features unit, integration, conformance and interoperability tests. Unit and integation tests can be run with:
$ cargo test --workspace
--workspace flag ensures the tests from the http and unixfs crates are also run.
Explanations on how to run the conformance tests can be found here. The Go and JS interoperability tests are behind a feature flag and can be run with:
$ cargo test --feature=test_go_interop $ cargo test --feature=test_js_interop
These are mutually exclusive, i.e.
--all-features won't work as expected.
Note: you will need to set the
GO_IPFS_PATH and the
JS_IPFS_PATH environment variables to point to the relevant IPFS binary.
See the contributing docs for more info.
If you have any questions on the use of the library or other inquiries, you are welcome to submit an issue.
Special thanks to the Web3 Foundation and Protocol Labs for their devgrant support.
/files(regular and mfs)
It’s been noted that the Rust-IPFS name and popularity may serve its organization from a "first-mover" perspective. However, alternatives with different philosophies do exist, and we believe that supporting a diverse IPFS community is important and will ultimately help produce the best solution possible.
rust-ipfs-api- A Rust client for an existing IPFS HTTP API. Supports both hyper and actix.
ipfs-embed- An implementation based on
rust-ipld- Basic rust ipld library supporting
rust-libp2p, which does a lot the of heavy lifting here
If you know of another implementation or another cool project adjacent to these efforts, let us know!
This project exists thanks to all the people who contribute. [Contribute].
Become a financial contributor and help us sustain our community. [Contribute]
Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]
The Rust logo and wordmark are trademarks owned and protected by the Mozilla Foundation. The Rust and Cargo logos (bitmap and vector) are owned by Mozilla and distributed under the terms of the Creative Commons Attribution license (CC-BY).