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 在 网络编程
每月106次下载
用于 3 个crate(通过 zinnia_runtime)
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.toml 和 cross/Dockerfile 以获取灵感。
在 Cross 和 Go 文档中了解更多信息
许可证
本库根据 Apache 2.0 和 MIT 条款双授权。
版权所有 2023. Protocol Labs, Inc.