From 1329dd4e287c137ec0a90abeec0272275b2b2c8d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 2 Sep 2018 15:18:43 +0300 Subject: Avoid clones --- crates/gen_lsp_server/src/lib.rs | 4 ++-- crates/gen_lsp_server/src/msg.rs | 10 +++++----- crates/server/src/main_loop/mod.rs | 10 +++++----- crates/server/tests/heavy_tests/support.rs | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) (limited to 'crates') diff --git a/crates/gen_lsp_server/src/lib.rs b/crates/gen_lsp_server/src/lib.rs index 0dc24ffc1..b25017045 100644 --- a/crates/gen_lsp_server/src/lib.rs +++ b/crates/gen_lsp_server/src/lib.rs @@ -51,7 +51,7 @@ pub fn run_server( pub fn handle_shutdown(req: RawRequest, sender: &Sender) -> Option { match req.cast::() { Ok((id, ())) => { - let resp = RawResponse::ok::(id, ()); + let resp = RawResponse::ok::(id, &()); sender.send(RawMessage::Response(resp)); None } @@ -72,7 +72,7 @@ fn initialize( msg => bail!("expected initialize request, got {:?}", msg), }; - let resp = RawResponse::ok::(id, InitializeResult { capabilities: caps }); + let resp = RawResponse::ok::(id, &InitializeResult { capabilities: caps }); sender.send(RawMessage::Response(resp)); match receiver.recv() { Some(RawMessage::Notification(n)) => { diff --git a/crates/gen_lsp_server/src/msg.rs b/crates/gen_lsp_server/src/msg.rs index 42241194d..7fcac6f6d 100644 --- a/crates/gen_lsp_server/src/msg.rs +++ b/crates/gen_lsp_server/src/msg.rs @@ -88,7 +88,7 @@ impl RawMessage { } impl RawRequest { - pub fn new(id: u64, params: R::Params) -> RawRequest + pub fn new(id: u64, params: &R::Params) -> RawRequest where R: Request, R::Params: Serialize, @@ -96,7 +96,7 @@ impl RawRequest { RawRequest { id: id, method: R::METHOD.to_string(), - params: to_value(¶ms).unwrap(), + params: to_value(params).unwrap(), } } pub fn cast(self) -> ::std::result::Result<(u64, R::Params), RawRequest> @@ -114,7 +114,7 @@ impl RawRequest { } impl RawResponse { - pub fn ok(id: u64, result: R::Result) -> RawResponse + pub fn ok(id: u64, result: &R::Result) -> RawResponse where R: Request, R::Result: Serialize, { @@ -135,14 +135,14 @@ impl RawResponse { } impl RawNotification { - pub fn new(params: N::Params) -> RawNotification + pub fn new(params: &N::Params) -> RawNotification where N: Notification, N::Params: Serialize, { RawNotification { method: N::METHOD.to_string(), - params: to_value(¶ms).unwrap(), + params: to_value(params).unwrap(), } } pub fn cast(self) -> ::std::result::Result diff --git a/crates/server/src/main_loop/mod.rs b/crates/server/src/main_loop/mod.rs index 52fc00c9c..bb1d638e0 100644 --- a/crates/server/src/main_loop/mod.rs +++ b/crates/server/src/main_loop/mod.rs @@ -130,7 +130,7 @@ fn main_loop_inner( Event::Ws(ws) => { match ws { Ok(ws) => { - let not = RawNotification::new::(vec![ws.clone()]); + let not = RawNotification::new::(&vec![ws.clone()]); msg_sender.send(RawMessage::Notification(not)); state.set_workspaces(vec![ws]); state_changed = true; @@ -288,7 +288,7 @@ fn on_notification( let file_id = state.remove_mem_file(path.as_path())?; subs.remove_sub(file_id); let params = req::PublishDiagnosticsParams { uri, diagnostics: Vec::new() }; - let not = RawNotification::new::(params); + let not = RawNotification::new::(¶ms); msg_sender.send(RawMessage::Notification(not)); return Ok(()) } @@ -326,7 +326,7 @@ impl<'a> PoolDispatcher<'a> { let sender = self.sender.clone(); self.pool.execute(move || { let resp = match f(world, params, token) { - Ok(resp) => RawResponse::ok::(id, resp), + Ok(resp) => RawResponse::ok::(id, &resp), Err(e) => RawResponse::err(id, ErrorCode::InternalError as i32, e.to_string()), }; let task = Task::Respond(resp); @@ -363,7 +363,7 @@ fn update_file_notifications_on_threadpool( error!("failed to compute diagnostics: {:?}", e) } Ok(params) => { - let not = RawNotification::new::(params); + let not = RawNotification::new::(¶ms); sender.send(Task::Notify(not)); } } @@ -372,7 +372,7 @@ fn update_file_notifications_on_threadpool( error!("failed to compute decorations: {:?}", e) } Ok(params) => { - let not = RawNotification::new::(params); + let not = RawNotification::new::(¶ms); sender.send(Task::Notify(not)) } } diff --git a/crates/server/tests/heavy_tests/support.rs b/crates/server/tests/heavy_tests/support.rs index 006926216..76cbd56ea 100644 --- a/crates/server/tests/heavy_tests/support.rs +++ b/crates/server/tests/heavy_tests/support.rs @@ -83,7 +83,7 @@ impl Server { }; for (path, text) in files { res.send_notification(RawNotification::new::( - DidOpenTextDocumentParams { + &DidOpenTextDocumentParams { text_document: TextDocumentItem { uri: Url::from_file_path(path).unwrap(), language_id: "rust".to_string(), @@ -149,7 +149,7 @@ impl Server { R: Request, R::Params: Serialize, { - let r = RawRequest::new::(id, params); + let r = RawRequest::new::(id, ¶ms); self.sender.as_ref() .unwrap() .send(RawMessage::Request(r)); -- cgit v1.2.3