in src/sync/mpsc.rs [379:392]
fn drop(&mut self) {
if ExecutionState::should_stop() {
return;
}
let mut state = self.inner.state.borrow_mut();
assert!(state.known_receivers > 0);
state.known_receivers -= 1;
if state.known_receivers == 0 {
// Last receiver was dropped; wake up all senders
for &tid in state.waiting_senders.iter() {
ExecutionState::with(|s| s.get_mut(tid).unblock());
}
}
}