clightningrpc_plugin/
types.rs1use serde::{Deserialize, Serialize};
3use serde_json::Value;
4use std::fmt;
5
6#[derive(Deserialize, Serialize, Clone)]
7pub struct RpcOption {
8 pub name: String,
11 #[serde(rename = "type")]
13 pub opt_typ: String,
14 pub default: Option<String>,
17 pub description: String,
20 pub deprecated: bool,
22 pub value: Option<Value>,
24}
25
26impl RpcOption {
27 pub fn value<T: for<'de> serde::de::Deserialize<'de>>(&self) -> T {
28 let value: T = serde_json::from_value(self.value.to_owned().unwrap()).unwrap();
29 value
30 }
31}
32
33pub enum LogLevel {
34 Debug,
35 Info,
36 Warn,
37 Error,
38}
39
40impl fmt::Display for LogLevel {
41 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
42 match self {
43 LogLevel::Debug => write!(f, "debug"),
44 LogLevel::Info => write!(f, "info"),
45 LogLevel::Warn => write!(f, "warn"),
46 LogLevel::Error => write!(f, "error"),
47 }
48 }
49}
50
51#[cfg(feature = "log")]
52impl From<log::Level> for LogLevel {
53 fn from(value: log::Level) -> Self {
54 use log::Level;
55 match value {
56 Level::Debug => LogLevel::Debug,
57 Level::Info => LogLevel::Info,
58 Level::Warn => LogLevel::Warn,
59 Level::Error => LogLevel::Error,
60 Level::Trace => LogLevel::Debug,
61 }
62 }
63}