Don't use serde-derive in the rls shim

The already-small RLS shim can get a little smaller, and faster to
build, if we drop the serde-derive dependency and decode the one
"method" field it needs manually from `serde_json::Value`.
This commit is contained in:
Josh Stone 2023-07-10 14:53:57 -07:00
parent 05b82e551e
commit dd5fa7d9b3
3 changed files with 5 additions and 6 deletions

View File

@ -3021,7 +3021,6 @@ dependencies = [
name = "rls" name = "rls"
version = "2.0.0" version = "2.0.0"
dependencies = [ dependencies = [
"serde",
"serde_json", "serde_json",
] ]

View File

@ -5,5 +5,4 @@ edition = "2021"
license = "Apache-2.0/MIT" license = "Apache-2.0/MIT"
[dependencies] [dependencies]
serde = { version = "1.0.143", features = ["derive"] }
serde_json = "1.0.83" serde_json = "1.0.83"

View File

@ -3,7 +3,7 @@
//! This is a small stub that replaces RLS to alert the user that RLS is no //! This is a small stub that replaces RLS to alert the user that RLS is no
//! longer available. //! longer available.
use serde::Deserialize; use serde_json::Value;
use std::error::Error; use std::error::Error;
use std::io::BufRead; use std::io::BufRead;
use std::io::Write; use std::io::Write;
@ -21,7 +21,6 @@ fn main() {
} }
} }
#[derive(Deserialize)]
struct Message { struct Message {
method: Option<String>, method: Option<String>,
} }
@ -88,8 +87,10 @@ fn read_message_raw<R: BufRead>(reader: &mut R) -> Result<String, Box<dyn Error>
fn read_message<R: BufRead>(reader: &mut R) -> Result<Message, Box<dyn Error>> { fn read_message<R: BufRead>(reader: &mut R) -> Result<Message, Box<dyn Error>> {
let m = read_message_raw(reader)?; let m = read_message_raw(reader)?;
match serde_json::from_str(&m) { match serde_json::from_str::<Value>(&m) {
Ok(m) => Ok(m), Ok(message) => Ok(Message {
method: message.get("method").and_then(|value| value.as_str().map(String::from)),
}),
Err(e) => Err(format!("failed to parse message {m}\n{e}").into()), Err(e) => Err(format!("failed to parse message {m}\n{e}").into()),
} }
} }