diff options
Diffstat (limited to 'crates/flycheck')
-rw-r--r-- | crates/flycheck/src/lib.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs index 0d68fcd4d..073bcc9ae 100644 --- a/crates/flycheck/src/lib.rs +++ b/crates/flycheck/src/lib.rs | |||
@@ -50,7 +50,7 @@ impl fmt::Display for FlycheckConfig { | |||
50 | #[derive(Debug)] | 50 | #[derive(Debug)] |
51 | pub struct FlycheckHandle { | 51 | pub struct FlycheckHandle { |
52 | // XXX: drop order is significant | 52 | // XXX: drop order is significant |
53 | cmd_send: Sender<Restart>, | 53 | sender: Sender<Restart>, |
54 | thread: jod_thread::JoinHandle, | 54 | thread: jod_thread::JoinHandle, |
55 | } | 55 | } |
56 | 56 | ||
@@ -60,16 +60,15 @@ impl FlycheckHandle { | |||
60 | config: FlycheckConfig, | 60 | config: FlycheckConfig, |
61 | workspace_root: PathBuf, | 61 | workspace_root: PathBuf, |
62 | ) -> FlycheckHandle { | 62 | ) -> FlycheckHandle { |
63 | let (cmd_send, cmd_recv) = unbounded::<Restart>(); | 63 | let actor = FlycheckActor::new(sender, config, workspace_root); |
64 | let thread = jod_thread::spawn(move || { | 64 | let (sender, receiver) = unbounded::<Restart>(); |
65 | FlycheckActor::new(sender, config, workspace_root).run(cmd_recv); | 65 | let thread = jod_thread::spawn(move || actor.run(receiver)); |
66 | }); | 66 | FlycheckHandle { sender, thread } |
67 | FlycheckHandle { cmd_send, thread } | ||
68 | } | 67 | } |
69 | 68 | ||
70 | /// Schedule a re-start of the cargo check worker. | 69 | /// Schedule a re-start of the cargo check worker. |
71 | pub fn update(&self) { | 70 | pub fn update(&self) { |
72 | self.cmd_send.send(Restart).unwrap(); | 71 | self.sender.send(Restart).unwrap(); |
73 | } | 72 | } |
74 | } | 73 | } |
75 | 74 | ||
@@ -125,7 +124,7 @@ impl FlycheckActor { | |||
125 | recv(check_chan.unwrap_or(&never())) -> msg => Some(Event::CheckEvent(msg.ok())), | 124 | recv(check_chan.unwrap_or(&never())) -> msg => Some(Event::CheckEvent(msg.ok())), |
126 | } | 125 | } |
127 | } | 126 | } |
128 | fn run(&mut self, inbox: Receiver<Restart>) { | 127 | fn run(mut self, inbox: Receiver<Restart>) { |
129 | while let Some(event) = self.next_event(&inbox) { | 128 | while let Some(event) = self.next_event(&inbox) { |
130 | match event { | 129 | match event { |
131 | Event::Restart(Restart) => { | 130 | Event::Restart(Restart) => { |