#[derive(Debug)]
pub struct FlycheckHandle {
// XXX: drop order is significant
- cmd_send: Sender<Restart>,
+ sender: Sender<Restart>,
thread: jod_thread::JoinHandle,
}
config: FlycheckConfig,
workspace_root: PathBuf,
) -> FlycheckHandle {
- let (cmd_send, cmd_recv) = unbounded::<Restart>();
- let thread = jod_thread::spawn(move || {
- FlycheckActor::new(sender, config, workspace_root).run(cmd_recv);
- });
- FlycheckHandle { cmd_send, thread }
+ let actor = FlycheckActor::new(sender, config, workspace_root);
+ let (sender, receiver) = unbounded::<Restart>();
+ let thread = jod_thread::spawn(move || actor.run(receiver));
+ FlycheckHandle { sender, thread }
}
/// Schedule a re-start of the cargo check worker.
pub fn update(&self) {
- self.cmd_send.send(Restart).unwrap();
+ self.sender.send(Restart).unwrap();
}
}
recv(check_chan.unwrap_or(&never())) -> msg => Some(Event::CheckEvent(msg.ok())),
}
}
- fn run(&mut self, inbox: Receiver<Restart>) {
+ fn run(mut self, inbox: Receiver<Restart>) {
while let Some(event) = self.next_event(&inbox) {
match event {
Event::Restart(Restart) => {
use std::convert::{TryFrom, TryInto};
-use crossbeam_channel::{select, unbounded, Receiver};
+use crossbeam_channel::{select, unbounded, Receiver, Sender};
use notify::{RecommendedWatcher, RecursiveMode, Watcher};
use paths::{AbsPath, AbsPathBuf};
use rustc_hash::FxHashSet;
#[derive(Debug)]
pub struct NotifyHandle {
// Relative order of fields below is significant.
- sender: crossbeam_channel::Sender<Message>,
- _thread: jod_thread::JoinHandle,
+ sender: Sender<Message>,
+ thread: jod_thread::JoinHandle,
}
#[derive(Debug)]
let actor = NotifyActor::new(sender);
let (sender, receiver) = unbounded::<Message>();
let thread = jod_thread::spawn(move || actor.run(receiver));
- NotifyHandle { sender, _thread: thread }
+ NotifyHandle { sender, thread }
}
fn set_config(&mut self, config: loader::Config) {
self.sender.send(Message::Config(config)).unwrap()