mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 06:41:48 +00:00
cleanup
This commit is contained in:
parent
2d773a46c9
commit
15efd58274
1 changed files with 48 additions and 35 deletions
|
@ -470,10 +470,35 @@ impl<'a> PoolDispatcher<'a> {
|
||||||
self.world.cancel_requests();
|
self.world.cancel_requests();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.pool.execute({
|
||||||
let world = self.world.snapshot();
|
let world = self.world.snapshot();
|
||||||
let sender = self.sender.clone();
|
let sender = self.sender.clone();
|
||||||
self.pool.execute(move || {
|
move || {
|
||||||
let response = match f(world, params) {
|
let result = f(world, params);
|
||||||
|
let task = result_to_task::<R>(id, result);
|
||||||
|
sender.send(task).unwrap();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Ok(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn finish(&mut self) -> std::result::Result<u64, RawRequest> {
|
||||||
|
match (self.res.take(), self.req.take()) {
|
||||||
|
(Some(res), None) => Ok(res),
|
||||||
|
(None, Some(req)) => Err(req),
|
||||||
|
_ => unreachable!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn result_to_task<R>(id: u64, result: Result<R::Result>) -> Task
|
||||||
|
where
|
||||||
|
R: req::Request + 'static,
|
||||||
|
R::Params: DeserializeOwned + Send + 'static,
|
||||||
|
R::Result: Serialize + 'static,
|
||||||
|
{
|
||||||
|
let response = match result {
|
||||||
Ok(resp) => RawResponse::ok::<R>(id, &resp),
|
Ok(resp) => RawResponse::ok::<R>(id, &resp),
|
||||||
Err(e) => match e.downcast::<LspError>() {
|
Err(e) => match e.downcast::<LspError>() {
|
||||||
Ok(lsp_error) => RawResponse::err(id, lsp_error.code, lsp_error.message),
|
Ok(lsp_error) => RawResponse::err(id, lsp_error.code, lsp_error.message),
|
||||||
|
@ -503,19 +528,7 @@ impl<'a> PoolDispatcher<'a> {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
let task = Task::Respond(response);
|
Task::Respond(response)
|
||||||
sender.send(task).unwrap();
|
|
||||||
});
|
|
||||||
Ok(self)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn finish(&mut self) -> std::result::Result<u64, RawRequest> {
|
|
||||||
match (self.res.take(), self.req.take()) {
|
|
||||||
(Some(res), None) => Ok(res),
|
|
||||||
(None, Some(req)) => Err(req),
|
|
||||||
_ => unreachable!(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_file_notifications_on_threadpool(
|
fn update_file_notifications_on_threadpool(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue