4 个版本

0.2.2 2019年6月12日
0.2.1 2018年4月29日
0.1.1 2017年12月9日
0.1.0 2017年12月8日

#612并发

LGPL-3.0

43KB
794

Build Status License: LGPL v3

rgraph

任务图,执行由依赖定义的任务。

描述

此库提供了定义任务有向无环图(DAG)的机制。一旦生成图,可以实例化求解器对象来执行定义的任何任务。为了满足任务的输入,所有生产者任务都将被执行。

任务可以像定义函数一样定义,它需要

  • 一个名称
  • 一个输入列表,可能为空。
  • 一个输出列表,也可以为空。
  • 主体,执行将输入转换为输出的必要代码。

create_node! 宏将帮助您完成这项任务

   create_node!(
            task_name  (a: u32, b : u32) -> (output: u32) {
                // return is done by assigning to the output variable
                output = a + b;
            }
        )

任务的主体将由移动 lambda 执行,这强制执行一些保证。尽管如此,如果任务需要执行一些副作用,您可能需要注意以下几点

  • 对象需要克隆到任务作用域中。
  • 此时只能检查运行时借用。
  • 求解器不知道通过全局访问执行的数据更改。它仅跟踪作为任务输入或输出的已注册资源。因此,只要输入没有变化,任务可能就不会再次执行。这可能会导致由于要求声明不正确而没有发生的副作用。

一旦定义了任务,就可以将输入资源绑定到其他任务产生的输出,或者直接输入到求解器。

    g.bind_asset("task1::out_asset", "task2::in_asset").unwrap()

功能

  • 从图描述自动推导图顺序
  • 可缓存的运行:如果两次运行之间没有输入发生变化,则不会执行节点。
  • Dot 打印器,对于调试非常有用

待办事项列表

  • 在输入中添加标记以选择从上次运行而不是本次运行的副本。

依赖项

~55KB