plugin

Macro plugin 

Source
plugin!() { /* proc-macro */ }
Expand description

procedural macros that can be used wit the following code

use serde_json::{json, Value};
use clightningrpc_plugin_macros::{rpc_method, plugin};
use clightningrpc_plugin::commands::RPCCommand;
use clightningrpc_plugin::plugin::Plugin;
use clightningrpc_plugin::errors::PluginError;

#[derive(Clone)]
struct State;

impl State {
   pub fn new() -> Self {
       Self
   }
}

#[rpc_method(
    rpc_name = "foo",
    description = "This is a simple and short description"
)]
pub fn foo_rpc(plugin: &mut Plugin<State>, request: Value) -> Result<Value, PluginError> {
    Ok(json!({"is_dynamic": plugin.dynamic, "rpc_request": request}))
}

fn main() {
    let plugin = plugin! {
        state: State::new(),
        dynamic: true,
        notification: [],
        methods: [
            foo_rpc,
        ],
    };
    plugin.start();
}