All Projects → frugalos → liberasurecode

frugalos / liberasurecode

Licence: MIT license
A Rust wrapper for `openstack/liberasurecode`

Programming Languages

rust
11053 projects
shell
77523 projects

Projects that are alternatives of or similar to liberasurecode

hw offload api examples
Examples of usage for Mellanox HW offloads
Stars: ✭ 13 (-31.58%)
Mutual labels:  erasure-coding
archistar-smc
Secret sharing library in Java for the Archistar multi-cloud storage system
Stars: ✭ 44 (+131.58%)
Mutual labels:  erasure-coding
go-erasure
Erasure coding (Reed–Solomon coding) in Go
Stars: ✭ 44 (+131.58%)
Mutual labels:  erasure-coding
reed-solomon-erasure
[Looking for new owners/maintainers, see #88] Rust implementation of Reed-Solomon erasure coding
Stars: ✭ 135 (+610.53%)
Mutual labels:  erasure-coding
Seaweedfs
SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding.
Stars: ✭ 13,380 (+70321.05%)
Mutual labels:  erasure-coding
Glusterfs
Gluster Filesystem : Build your distributed storage in minutes
Stars: ✭ 3,437 (+17989.47%)
Mutual labels:  erasure-coding
CBindingGen.jl
Automatically generate Julia-C bindings!
Stars: ✭ 15 (-21.05%)
Mutual labels:  c-bindings

liberasurecode

Crates.io: liberasurecode Documentation Build Status License: MIT

A Rust wrapper for openstack/liberasurecode.

Documentation

Prerequisites to Build

This crate requires the following packages for building openstack/liberasurecode in the build script:

  • C compiler (e.g., gcc)
  • git
  • make
  • automake
  • autoconf
  • libtool

For example, on Ubuntu, you can install those by executing the following command:

$ sudo apt install gcc git make automake autoconf libtool

Examples

Basic usage:

use liberasurecode::{ErasureCoder, Error};

let mut coder = ErasureCoder::new(4, 2)?;
let input = vec![0, 1, 2, 3];

// Encodes `input` to data and parity fragments
let fragments = coder.encode(&input)?;

// Decodes the original data from the fragments (or a part of those)
assert_eq!(Ok(&input), coder.decode(&fragments[0..]).as_ref());
assert_eq!(Ok(&input), coder.decode(&fragments[1..]).as_ref());
assert_eq!(Ok(&input), coder.decode(&fragments[2..]).as_ref());
assert_eq!(Err(Error::InsufficientFragments), coder.decode(&fragments[3..]));
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].