1个不稳定版本

0.1.0 2022年12月28日

#35 in #dag

MPL-2.0 许可证

25KB
576 行代码(不包括注释)

daglib

daglib是针对Node类型、Node标识符类型和后端(DAG的存储)的泛型异步DAG库。

状态

实验性。请勿使用。

这是什么?

我的问题是,我想在IPFS/IPLD上实现一个DAG。然而,现有的IPFS/IPLD库并没有提供构建DAG的简单功能。虽然有DAG库,但它们都自行实现了存储功能。我需要一个异步且泛型的后端,以便可以在后端使用IPFS(或任何其他支持异步操作的工具)。因此,这个库应运而生。

此库定义了底层后端的一个简单接口

#[async_trait]
pub trait DagBackend<Id, N>
    where N: Node,
          Id: NodeId + Send
{
    async fn get(&self, id: Id) -> Result<Option<N>>;
    async fn put(&mut self, node: N) -> Result<Id>;
}

这就是全部。在这之上,AsyncDag类型实现了DAG数据结构。

限制

因为这个库最初是为了与IPFS后端一起使用而初始化的,所以它有一些限制

  • 它假设你永远不能删除节点。你可以重写DAG,但这并不一定意味着删除节点。

这个列表将在未来扩展。请勿假设它是完整的!

许可证

MPL-2.0

依赖项

~1–1.6MB
~34K SLoC