# Distrib
[](https://unlicense.org)
[](https://endoflife.date/rust)
[](https://crates.io/crates/distrib)
[](https://docs.rs/distrib)
**Distrib helps you distribute your software.**
<sub>
[[Features](#-features)] |
[[Prerequisites](#%EF%B8%8F-prerequisites)] |
[[Installation](#%EF%B8%8F-installation)] |
[[Examples](#-examples)] |
[[Reference](#-reference)] |
[[Development](#%E2%80%8D-development)]
</sub>
<br/>
## ✨ Features
- Available both as the command-line tool [`distrib`] and a Rust library.
- 100% pure and safe Rust with minimal dependencies and no bloat.
- Designed for `#![no_std]` environment compatibility from the get-go.
- Supports opting out of any feature using comprehensive [feature flags].
- Adheres to the Rust API Guidelines in its [naming conventions].
- Polyglot software also <sup><sub>(soon!)</sub></sup> available for Dart, Python, Ruby, and TypeScript.
- Cuts red tape: 100% free and unencumbered public domain software.
## 🛠️ Prerequisites
- [Rust] 2024+
## ⬇️ Installation
### Installation of the CLI
#### Installation via [Cargo Binstall]
```bash
cargo binstall -y distrib
```
#### Installation via [mise]
```bash
mise use -g github:artob/distrib
```
#### Installation via [Cargo]
```bash
cargo install distrib --locked --features=cli
```
#### Downloading Release Tarballs
```bash
wget https://github.com/artob/distrib/releases/download/0.0.0/distrib-aarch64-apple-darwin.tar.xz
wget https://github.com/artob/distrib/releases/download/0.0.0/distrib-aarch64-unknown-linux-gnu.tar.xz
wget https://github.com/artob/distrib/releases/download/0.0.0/distrib-x86_64-apple-darwin.tar.xz
wget https://github.com/artob/distrib/releases/download/0.0.0/distrib-x86_64-pc-windows-msvc.zip
wget https://github.com/artob/distrib/releases/download/0.0.0/distrib-x86_64-unknown-linux-gnu.tar.xz
```
### Installation of the Library
<details>
<summary>Installation from Crates.io</summary>
#### Installation from [Crates.io]
```bash
cargo add distrib
```
</details>
<details>
<summary>Configuration in <code>Cargo.toml</code></summary>
#### Configuration in `Cargo.toml`
Enable all default features:
```toml
[dependencies]
distrib = { version = "0" }
```
Enable only specific features:
```toml
[dependencies]
distrib = { version = "0", default-features = false, features = ["alloc"] }
```
</details>
## 👉 Examples
### Importing the Library
```rust
use distrib::*;
```
## 📚 Reference
[docs.rs/distrib](https://docs.rs/distrib)
### Command-Line Interface
### Feature Flags
#### Interoperability
| `serde` | 1.0 | Derives `serde::{Serialize, Deserialize}` |
## 👨💻 Development
```bash
git clone https://github.com/artob/distrib.git
```
---
[](https://x.com/intent/post?url=https%3A%2F%2Fgithub.com%2Fartob%2Fdistrib&text=Distrib)
[](https://reddit.com/submit?url=https%3A%2F%2Fgithub.com%2Fartob%2Fdistrib&title=Distrib)
[](https://news.ycombinator.com/submitlink?u=https%3A%2F%2Fgithub.com%2Fartob%2Fdistrib&t=Distrib)
[](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fgithub.com%2Fartob%2Fdistrib)
[](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgithub.com%2Fartob%2Fdistrib)
[`distrib`]: https://github.com/artob/distrib#command-line-interface
[Crates.io]: https://crates.io/crates/distrib
[feature flags]: https://docs.rs/crate/distrib/latest/features
[naming conventions]: https://rust-lang.github.io/api-guidelines/naming.html
[Cargo]: https://rustup.rs
[Cargo Binstall]: https://crates.io/crates/cargo-binstall
[Rust]: https://rust-lang.org
[mise]: https://mise.jdx.dev