#function #dispatch #run-time #dynamic #map

dispatchtable

一个小型库,用于指定函数调度表 HashMap<K, Box<Fn(..)>>

6 个版本

0.2.0 2020 年 3 月 13 日
0.1.4 2020 年 3 月 11 日

2842Rust 模式

每月 29 次下载

MIT 许可证

7KB
148

DispatchTable

一个用于在基于键的集合中存储函数的 Rust 库。

use dispatchtable::{DispatchTable, Dispatch};

fn add(params: &(isize, isize)) -> isize {
    params.0 + params.1
}

fn sub(params: &(isize, isize)) -> isize {
    params.0 + params.1
}


fn main() {
    let mut table = DispatchTable::new();
    table.insert("add", Box::new(add));
    table.insert("sub", Box::new(sub));

    assert_eq!(table.call(&"add", &(1, 2)), Some(3));
    assert_eq!(table.call(&"sub", &(5, 2)), Some(3));
}

lib.rs:

dispatchtable 是一个运行时基于键的集合,包含函数引用。

快速入门

use dispatchtable::{Dispatch, DispatchTable};

fn add(p: &(u8, u8)) -> u8 { p.0 + p.1 }
fn sub(p: &(u8, u8)) -> u8 { p.0 - p.1 }

fn main() {
  let mut dispatchtable = DispatchTable::new();

  dispatchtable.insert("add".to_string(), Box::new(add));
  dispatchtable.insert("sub".to_string(), Box::new(sub));

  assert_eq!(dispatchtable.call("sub", &(10, 5)), Some(5));
}

无运行时依赖