2019-02-05 23:10:49 +01:00
|
|
|
use std::path::PathBuf;
|
2019-01-10 22:21:14 +03:00
|
|
|
|
2019-02-14 20:43:45 +03:00
|
|
|
use thread_worker::Worker;
|
2018-10-15 17:44:23 -04:00
|
|
|
|
2018-12-18 12:45:20 +03:00
|
|
|
use crate::Result;
|
2018-09-02 11:37:16 +03:00
|
|
|
|
2019-02-05 23:10:49 +01:00
|
|
|
pub use ra_project_model::{
|
|
|
|
|
ProjectWorkspace, CargoWorkspace, Package, Target, TargetKind, Sysroot,
|
2019-01-10 22:21:14 +03:00
|
|
|
};
|
|
|
|
|
|
2019-02-14 20:43:45 +03:00
|
|
|
pub fn workspace_loader() -> Worker<PathBuf, Result<ProjectWorkspace>> {
|
|
|
|
|
Worker::<PathBuf, Result<ProjectWorkspace>>::spawn(
|
2019-01-10 20:13:08 +03:00
|
|
|
"workspace loader",
|
|
|
|
|
1,
|
|
|
|
|
|input_receiver, output_sender| {
|
|
|
|
|
input_receiver
|
|
|
|
|
.into_iter()
|
|
|
|
|
.map(|path| ProjectWorkspace::discover(path.as_path()))
|
|
|
|
|
.try_for_each(|it| output_sender.send(it))
|
|
|
|
|
.unwrap()
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
}
|