1 个不稳定版本

0.1.0 2021 年 7 月 7 日

#6 in #blob-storage

自定义许可证

23KB
258

rstr

rstr 是一个用于管理内容可寻址的 blob 存储库的库。

示例

将文件或目录添加到 blob 存储库

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();

从 blob 存储库检索 blob

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");

依赖项

~7–17MB
~212K SLoC