Я использую библиотеку 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(¶ms).unwrap();
let event: Event = serde_json::from_str(&string).unwrap();
Однако, сериализация и десериализация таким способом кажется пустой тратой, Любой другой способ конвертировать из двух эквивалентных типов, которые реализуют serde_json
* Serialize
/ Deserialize
черты?