server-function

Crates.ioserver-function
lib.rsserver-function
version0.1.3
sourcesrc
created_at2022-11-22 22:45:30.162096
updated_at2022-12-20 09:55:54.563133
descriptionA macro for easy RPC creation
homepagehttps://github.com/r4nd0m1z3r/server-function
repositoryhttps://github.com/r4nd0m1z3r/server-function
max_upload_size
id721175
size43,405
(r4nd0m1z3r)

documentation

README

What is this

This is a macro for RPC programming needs which generates a structure and a thunk for function in a way that allows calling that function with a struct argument that supports serde::Deserialize

How to use

  1. Mark function with #[server_function] attribute

    #[server_function]
    fn add(a: u32, b: u32) -> u32 {
        a + b
    }
    
  2. This will generate AddArgs struct matching your function arguments that looks like this

    struct AddArgs {
        a: u32,
        b: u32
    }
    

    and a function named add_thunk with AddArgs struct as 1 argument

  3. Now you can call it

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

Features

messagepack

Enables rmp-serde and allows server function to be called using raw messagepack bytes using with_bytes_thunk(bytes: &[u8])

Example

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

cargo fmt