Serde / jsonrp c -core: конвертировать между представлениями одних и тех же данных - PullRequest
1 голос
/ 21 апреля 2020

Я использую библиотеку jsonrpc-core для связи на основе спецификаций JSON -RP C 2.0. При регистрации методов rp c через add_method они принимают один параметр, который является уже проанализированным значением jsonrpc_core::Params, представляющим параметры объекта запроса.

Однако у меня есть тип данных enum, который также является представлением этих данных:

#[derive(Serialize, Deserialize)]
pub enum Event {
    Warning { level: String, time: String, source: String, log: String },
}

Теперь я могу легко конвертировать между этими представлениями через

let params: jsonrpc_core::Params = ...
let string: String = serde_json::to_string(&params).unwrap();

let event: Event = serde_json::from_str(&string).unwrap();

Однако, сериализация и десериализация таким способом кажется пустой тратой, Любой другой способ конвертировать из двух эквивалентных типов, которые реализуют serde_json * Serialize / Deserialize черты?

...