Testing a thread that invoke an FnMut callback


I am doing an async implementation of an iterator as follow:

pub fn iter_mut<T, F>(input: Vec<T>, callback : F) 
        T: 'static + PartialOrd + Ord + Clone + Send,
        F: 'static + Box<FnMut(Vec<T>) + Send>,
        let computer_handler = thread::spawn(move || {
            let iterator = PermutationIterator::new(input);

            for permutation in iterator {



And the test is:

fn should_invoke_a_mutable_callback() {
    let input = vec![1, 2, 3];
    let mut counter = 0;
    let receiver = |permutation| {
        counter = counter + 1;
    // call
    PermutationIteratorThread::iter_mut( input, receiver );
    // assertions
    assert_eq!( 6, counter );


But it does not work at all… i don’t manage to do that. I won’t give you the errors I have with cargo test because I have done many tries that don’t succeed.

Please advise

You can have a look at the whole project here

At a glance receiver is neither 'static or Send. Make the counter an Arc<Atomic and the closure moves a clone of it.