From 44425eaebcf9c1b3fb8ad311bed83887ab54a43b Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 11 Feb 2020 09:46:45 +0100 Subject: Better error messages while deserializing --- crates/ra_lsp_server/src/lib.rs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'crates/ra_lsp_server/src/lib.rs') diff --git a/crates/ra_lsp_server/src/lib.rs b/crates/ra_lsp_server/src/lib.rs index 1208c1343..a3464a5a3 100644 --- a/crates/ra_lsp_server/src/lib.rs +++ b/crates/ra_lsp_server/src/lib.rs @@ -31,6 +31,8 @@ mod config; mod world; mod diagnostics; +use serde::de::DeserializeOwned; + pub type Result = std::result::Result>; pub use crate::{ caps::server_capabilities, @@ -38,3 +40,9 @@ pub use crate::{ main_loop::LspError, main_loop::{main_loop, show_message}, }; + +pub fn from_json(what: &'static str, json: serde_json::Value) -> Result { + let res = T::deserialize(&json) + .map_err(|e| format!("Failed to deserialize {}: {}; {}", what, e, json))?; + Ok(res) +} -- cgit v1.2.3