#filecoin #ipfs #retrieval #universal #client

lassie

A Rust包装器,用于Lassie - IPFS和Filecoin的轻量级通用检索客户端库

13个版本 (8个破坏性)

0.9.0 2024年2月1日
0.8.0 2023年12月12日
0.7.0 2023年10月25日
0.5.1 2023年6月28日

#1375网络编程

Download history 38/week @ 2024-03-24 37/week @ 2024-03-31 12/week @ 2024-04-07 81/week @ 2024-04-14 15/week @ 2024-04-21 10/week @ 2024-04-28 15/week @ 2024-05-05 49/week @ 2024-05-12 13/week @ 2024-05-19 6/week @ 2024-05-26 15/week @ 2024-06-02 13/week @ 2024-06-09 19/week @ 2024-06-16 23/week @ 2024-06-23 39/week @ 2024-06-30 24/week @ 2024-07-07

每月106次下载
用于 3 个crate(通过 zinnia_runtime

MIT/Apache

1.5MB
581

rusty-lassie

A Rust包装器,用于Lassie - IPFS和Filecoin的轻量级通用检索客户端库

Lassie仓库: https://github.com/filecoin-project/lassie

安装

$ cargo add lassie

此库使用CGo将Lassie的Go版本转换为可以链接到Rust程序的库。

除了Rust构建工具链外,您还需要安装Go。请参阅Go下载

在Windows上,Go使用gcc创建C库。Go推荐安装TDM GCC

基本使用

我们在守护进程模式下使用Lassie。我们在后台运行Lassie HTTP服务器,然后使用HTTP客户端(如ureq)通过Lassie的HTTP接口从IPFS & Filecoin网络获取内容。

第一步是启动Lassie守护进程

use lassie::Daemon;

pub fn main() {
  let daemon = Daemon::start(DaemonConfig::default()).expect("cannot start Lassie");
  let port = daemon.port();

  // ...
}

注意

  • 您不需要停止守护进程,当它被丢弃时将自动停止。

  • 每个进程只能运行一个守护进程,库会强制执行此限制。

  • 此代码是同步的,并在内部使用Mutex。从async fn启动守护进程时要小心其后果!

一旦守护进程运行,您就可以通过HTTP请求获取内容。

let port = daemon.port();
let url = format!("http://127.0.0.1:{port}/ipfs/bafybeib36krhffuh3cupjml4re2wfxldredkir5wti3dttulyemre7xkni");
let response = ureq::get(&url)
    .set("Accept", "application/vnd.ipld.car")
    .call();

let mut content = Vec::new();
response
    .into_reader()
    .read_to_end(&mut content)
    .expect("cannot read response body");

// content contains raw CAR data

在他们的文档中了解更多关于Lassie的信息

Windows特定

无法将CGo生成的库静态链接到使用MSVC工具链编译的Rust程序。作为解决方案,我们将Go Lassie库构建为DLL,必须与应用程序可执行文件一起分发。

Rusty-Lassie的构建脚本将DLL复制到主可执行文件旁边的目标目录。您只需要在您的分发归档中包含此DLL。

交叉编译

如果您正在使用Cross构建项目,您需要在Cross使用的Docker镜像中安装Go。

查看我们的 Cross.tomlcross/Dockerfile 以获取灵感。

在 Cross 和 Go 文档中了解更多信息

许可证

本库根据 Apache 2.0 和 MIT 条款双授权。

版权所有 2023. Protocol Labs, Inc.

依赖项