3 个不稳定版本

0.2.2 2023年6月22日
0.2.0 2020年11月10日
0.1.0 2020年11月9日

#11 in #协调

每月45次下载
用于 kpt_lib

MIT 许可证

8KB
99

协调

协调库旨在通过提供一个框架来简化和管理复杂的工作流程,以控制方式协调和排序功能。它允许开发者定义一系列状态函数,并按预定义的顺序执行它们,在每一步之间传递数据。该库能够处理各种类型,提供了处理不同数据结构的灵活性。

改进和更改

  • 增强类型处理能力,以适应更广泛的数据类型。
  • 字符串连接示例:更新的文档现在包括一个展示字符串连接的示例。这个新增内容帮助用户了解如何在他们的协调工作流程中执行字符串操作。
  • 改进的计算示例:计算示例已更新以展示库的改进功能。用户现在可以利用库的功能更有效地进行计算。

设置

要定义一个协调函数,您可以使用 state_function! 宏。以下是一个示例

 let fn1: fn(State<f32>) -> Result<State<f32>, Error> =
        state_function!(pow2, f32);

状态由以下结构表示

pub struct State<T> {
    pub proceed: bool,
    pub outcome: Option<T>,
    pub stage: Vec<bool>,
}

在某些情况下,您可以直接通过以下方法使用协调

  let result = vec![fn1, fn2, fn3]
        .execute(State {
            proceed: true,
            outcome: Some(6.),
            stage: Vec::<bool>::new(),
        });

或者,您可以使用注册特质为协调函数分配字符串名称。这种方法在配置更通用的函数序列时非常有用

    registry.register(fn1, "pow2".to_string());
    registry.register(fn2, "pow3".to_string());
    registry.register(fn3, "sqrt".to_string());

        let result = vec!["pow2", "pow3", "sqrt"]
        .create(&registry.di_ref)
        .execute(State {
            proceed: true,
            outcome: Some(6.),
            stage: Vec::<bool>::new(),
        });

通过为阶段分配值,如图下示例所示,您可以在序列中跳过特定的步骤。将步骤标记为 true 允许它被跳过

            stage: vec![true, true, false, false],

有关更复杂的示例,请参阅以下链接: https://github.com/elasticrash/keyboard/blob/master/lib/src/geometry/exported_geometry.rs

无运行时依赖