#google-drive #amazon-s3 #save-load #storage #local #disk #api

geckopanda

从本地磁盘、Google Drive 或 Amazon S3 保存和加载文件

2 个不稳定版本

0.2.0 2023年11月24日
0.1.0 2023年8月29日

#10 in #save-load

Unlicense

22KB
342

Crate Docs License

GeckoPanda

从本地磁盘、Google Drive 或 Amazon S3 保存和加载文件。

  • ❌ 快速
  • ❌ 智能化
  • ✅ 简单

此包提供了 Storage trait 以及实现它的几个后端,提供了一个非常简单的 API 来列出、创建、更新和删除文件。这些操作可以是异步的或同步的(阻塞)。

用法

use geckopanda::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let storage = LocalDiskStorage::new("./storagecache")?;
    // See examples for `GoogleDriveStorage` and `AmazonS3Storage`

    let file_id = storage.create_blocking("example.file")?;
    println!("Created file ID: {file_id}");

    let data = "example file content";
    storage.update_blocking(&file_id, data.as_bytes())?;
    println!("Uploaded data: {data:?}");

    let download_data = String::from_utf8(storage.get_blocking(&file_id)?)?;
    assert_eq!(data, &download_data);
    println!("Downloaded data: {download_data:?}");

    let total_size: u64 = storage
        .list_blocking()?
        .iter()
        .map(|metadata| metadata.size)
        .sum();
    println!("Total size: {total_size} bytes");

    storage.delete_blocking(&file_id)?;
    println!("Deleted file ID: {file_id}");
    Ok(())
}

依赖项

~3–17MB
~227K SLoC