#rpc #creation #macro #generate #thunk #messagepack #call

nightly macro server-function

一个易于创建RPC的宏

4个版本

0.1.3 2022年12月20日
0.1.2 2022年12月10日
0.1.1 2022年11月23日
0.1.0 2022年11月22日

#742 in 进程宏

MIT 许可证

40KB
601 代码行

这是什么

这是一个用于RPC编程的宏,它可以生成一个结构体和一个thunk(占位符),允许使用支持serde::Deserialize的结构体参数调用该函数。

如何使用

  1. 使用#[server_function]属性标记函数

    #[server_function]
    fn add(a: u32, b: u32) -> u32 {
        a + b
    }
    
  2. 这将生成与您的函数参数匹配的AddArgs结构体,如下所示

    struct AddArgs {
        a: u32,
        b: u32
    }
    

    以及一个名为add_thunk的函数,它以AddArgs结构体作为参数

  3. 现在您可以调用它了

    // will return 10, same as original function
    add_thunk(AddArgs { a: 5, b: 5 })
    

特性

messagepack

启用rmp-serde,允许使用原始messagepack字节调用服务器函数,使用with_bytes_thunk(bytes: &[u8])

示例

let bytes = rmp_serde::to_vec(AddArgs { a: 5, b: 5 }).unwrap();
add_messagepack_thunk(&bytes) // should return 10

依赖项

~1–1.7MB
~32K SLoC