# Storj Uplink Library for Rust
[](https://github.com/storj-thirdparty/uplink-rust/actions/workflows/uplink.yml)
[](https://crates.io/crates/uplink)
[](https://docs.rs/uplink)

Safe and idiomatic Rust crate library for the [Storj Uplink Library][storj-uplink].
## Current status
This crate has implemented all the functionalities offered by the `uplink-sys`
create and it's fully documented.
It has several unit-tests and integration tests which prove that a big part of
the public API works as expected.
The crate is fully documented and the `docs` contains documentation outside of
the API (types, function, etc.).
We consider its current status beta and it can be use for production systems
with care because, despite of the integration tests, we don't know any reference
that this crate is used in any production application.
If you're using this crate in any of your applications, we'd love that you open
an issue and you tell us about.
## Implementation
This crate wraps the `uplink-sys` crate present in this same repository for
offering an safe and idiomatic Rust [Storj Uplink][storj-uplink].
Because it relies on `uplink-sys` and `uplink-sys` requires [Go](https://golang.org),
using this crate also requires Go.
### Development
For development the only requirements are Rust, Go, and clang.
For running the integration tests you need a Docker version that has the `compose`
command, which is the `docker-compose` tool that it's now integrated in Docker.
The command is needed because the Makefile invoked, but you should be able to
use a Docker version without the `compose` command, using the `docker-compose`,
however, you will have to run by hand or make an straightforward change in the
Makefile.
When some integration test fails it may provoke the failure of other integration tests to fail in
subsequent runs. This is because the previous executed test which failed left garbage data in the
satellite/edge services. To execute again the tests without having to execute a full clean up, you
may go to the temporary directory _../.tmp/up_ and run `docker compose down` and
`docker compose up -d` and then execute `make test-integrationa`.
[storj-uplink]: https://github.com/storj/uplink