enclose 1.2.1

A convenient macro, for cloning values into a closure.
Documentation
use std::sync::Arc;
use std::sync::Mutex;
use std::thread;

use enclose::enclose;

fn main() {
	let mutex_left_data = Arc::new(Mutex::new(0));
	let right_data = Arc::new(1);

	let thread = thread::spawn(enclose!((mutex_left_data, right_data) move || {
		// (mutex_left_data, right_data) ->
		// let mutex_left_data = mutex_left_data.clone();
		// let right_data = right_data.clone();

		let mut lock = match mutex_left_data.lock() {
			Ok(a) => a,
			Err(e) => e.into_inner(),
		};
		*lock += *right_data;
	}));
	thread.join().unwrap();

	{
		let left_data = match mutex_left_data.lock() {
			Ok(a) => a,
			Err(e) => e.into_inner(),
		};

		assert_eq!(*left_data, *right_data);
		// if *left_data == *right_data
	}
}