diff options
author | Aleksey Kladov <[email protected]> | 2018-09-08 11:15:01 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-09-08 11:15:01 +0100 |
commit | 7daaddb2ac281dcad3ac99496b1cf3f06840887d (patch) | |
tree | 3a6c9ac35c0f198c782591b50eb50225769955bb /crates/server/src/project_model.rs | |
parent | 326ffcefe09906560a03d3184a2ce76841448702 (diff) |
Some abstraction around workers
Diffstat (limited to 'crates/server/src/project_model.rs')
-rw-r--r-- | crates/server/src/project_model.rs | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/crates/server/src/project_model.rs b/crates/server/src/project_model.rs index b9d6872c8..359cf787d 100644 --- a/crates/server/src/project_model.rs +++ b/crates/server/src/project_model.rs | |||
@@ -3,12 +3,11 @@ use std::{ | |||
3 | path::{Path, PathBuf}, | 3 | path::{Path, PathBuf}, |
4 | }; | 4 | }; |
5 | use cargo_metadata::{metadata_run, CargoOpt}; | 5 | use cargo_metadata::{metadata_run, CargoOpt}; |
6 | use crossbeam_channel::{Sender, Receiver}; | ||
7 | use libsyntax2::SmolStr; | 6 | use libsyntax2::SmolStr; |
8 | 7 | ||
9 | use { | 8 | use { |
10 | Result, | 9 | Result, |
11 | thread_watcher::{ThreadWatcher, worker_chan}, | 10 | thread_watcher::{Worker, ThreadWatcher}, |
12 | }; | 11 | }; |
13 | 12 | ||
14 | #[derive(Debug, Clone)] | 13 | #[derive(Debug, Clone)] |
@@ -162,14 +161,15 @@ impl TargetKind { | |||
162 | } | 161 | } |
163 | } | 162 | } |
164 | 163 | ||
165 | pub fn workspace_loader() -> ((Sender<PathBuf>, Receiver<Result<CargoWorkspace>>), ThreadWatcher) { | 164 | pub fn workspace_loader() -> (Worker<PathBuf, Result<CargoWorkspace>>, ThreadWatcher) { |
166 | let (interface, input_receiver, output_sender) = worker_chan::<PathBuf, Result<CargoWorkspace>>(1); | 165 | Worker::<PathBuf, Result<CargoWorkspace>>::spawn( |
167 | let thread = ThreadWatcher::spawn("workspace loader", move || { | 166 | "workspace loader", |
168 | input_receiver | 167 | 1, |
169 | .into_iter() | 168 | |input_receiver, output_sender| { |
170 | .map(|path| CargoWorkspace::from_cargo_metadata(path.as_path())) | 169 | input_receiver |
171 | .for_each(|it| output_sender.send(it)) | 170 | .into_iter() |
172 | }); | 171 | .map(|path| CargoWorkspace::from_cargo_metadata(path.as_path())) |
173 | 172 | .for_each(|it| output_sender.send(it)) | |
174 | (interface, thread) | 173 | } |
174 | ) | ||
175 | } | 175 | } |