2 releases
Uses old Rust 2015
0.1.1 | Mar 2, 2018 |
---|---|
0.1.0 | Feb 15, 2018 |
#4 in #addressable
7KB
133 lines
blobstore
A content addressable store for arbitrary blobs.
Usage
Add the following to your Cargo.toml
file:
[dependencies]
blobstore = "*"
and import into your code:
extern crate blobstore;
Example
extern crate blobstore;
use blobstore::BlobStore;
let mut data = "foo".as_bytes();
let store = BlobStore::new("./store".to_string());
// this will accept any `std::io::Read` type
let hash = store.put(&mut data).unwrap();
// hash is a SHA256 of the content
assert_eq!(hash, "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae");
let mut value = String::new();
store.get(hash.as_ref()).unwrap().read_to_string(&mut value).unwrap();
assert_eq!(value, "foo");
store.remove(hash.as_ref()).unwrap();
fs::remove_dir_all(store.path).unwrap();
API
BlobStore
implements the following trait:
trait Store {
fn put(&self, item: &mut std::io::Read) -> Result<String, std::io::Error>;
fn get(&self, hash: &str) -> Result<stf::fs::File, std::io::Error>;
fn remove(&self, hash: &str) -> Result<(), std::io::Error>;
}
Dependencies
~4MB
~54K SLoC