//@ check-pass #![allow(unused_must_use)] #![allow(dead_code)] #![allow(unused_mut)] use std::thread; use std::sync::mpsc::Sender; type RingBuffer = Vec ; type SamplesFn = Box; enum Msg { GetSamples(String, SamplesFn), // sample set name, callback which receives samples } fn foo(name: String, samples_chan: Sender) { thread::spawn(move|| { let mut samples_chan = samples_chan; let callback: SamplesFn = Box::new(move |buffer| { for i in 0..buffer.len() { println!("{}: {}", i, buffer[i]) } }); samples_chan.send(Msg::GetSamples(name.clone(), callback)); }).join(); } pub fn main() {}