Expand description
rstr
is a library for managing a content-addressable blob store.
The BlobStore
struct manages the interaction with the blob store.
An entry in the blob store is represented by an instance of the struct BlobRef
.
§Examples
Add files or directories to the blob store:
use rstr::{BlobStore,BlobRef};
use std::path::{Path, PathBuf};
let blob_store = BlobStore::new("../tests/test_data_store").unwrap();
let n_threads: u8 = 8;
let (blob_refs_with_paths, _): (Vec<(PathBuf, BlobRef)>, _) = blob_store.add_files(
&[
// Can add files
Path::new("../tests/test_file.txt"),
// or directories
Path::new("tests/"),
],
n_threads,
);
let blob_refs: Vec<BlobRef> = blob_refs_with_paths.into_iter().map(|(_, b)| b).collect();
Retrieve a blob from the blob store
use rstr::{BlobStore, BlobRef};
let blob_store = BlobStore::new("../tests/test_data_store").unwrap();
// Retrieve a blob from the blob store
let reference = "f29bc64a9d3732b4b9035125fdb3285f5b6455778edca72414671e0ca3b2e0de";
let blob_ref = BlobRef::new(reference).unwrap();
assert!(blob_store.exists(&blob_ref));
// Get the blob's content
let content = blob_store.get(&blob_ref).unwrap();
// Get the blob's metadata
let metadata = blob_store.metadata(&blob_ref).unwrap();
assert_eq!(metadata.filename, "test_file.txt");
assert_eq!(metadata.mime_type, "text/plain");
Structs§
- Blob
Metadata - Struct representing the metadata associated to a blob
- BlobRef
- Struct representing a reference to an entry in the blob store
- Blob
Store - Struct for interacting with the blob store
Enums§
- Error
- Error raised by the blob store
Traits§
- Sha2
Digest - The
Digest
trait specifies an interface common for digest functions.