Skip to content

Commit ea3bc35

Browse files
authored
Prefer T::deserialize over T::from_value to avoid clone (#1130)
1 parent 7f22f20 commit ea3bc35

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/vim.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ use anyhow::Result;
99
use jsonrpc_core::Value;
1010
use log::*;
1111
use lsp_types::Position;
12-
use serde::{de::DeserializeOwned, Serialize};
12+
use serde::{de::DeserializeOwned, Deserialize, Serialize};
1313
use serde_json::json;
1414
use std::{path::Path, sync::Arc};
1515

1616
/// Try get value of an variable from RPC params.
17-
pub fn try_get<R: DeserializeOwned>(key: &str, params: &Value) -> Result<Option<R>> {
17+
pub fn try_get<'a, R: Deserialize<'a>>(key: &str, params: &'a Value) -> Result<Option<R>> {
1818
let value = &params[key];
1919
if value == &Value::Null {
2020
Ok(None)
2121
} else {
22-
Ok(serde_json::from_value(value.clone())?)
22+
Ok(<Option<R>>::deserialize(value)?)
2323
}
2424
}
2525

0 commit comments

Comments
 (0)