basalt 0.4.4

A window/ui framework built upon vulkan.
Documentation
pub mod http;
pub mod timer;
pub mod tmp_image_access;

pub use self::http::get_bytes;
pub use self::timer::Timer;
pub use self::tmp_image_access::TmpImageViewAccess;
use std::sync::Arc;

pub fn do_work<W: Send + 'static>(work: Vec<W>, func: Arc<dyn Fn(W) + Send + Sync>) {
	let threads = ::num_cpus::get();
	let mut split = Vec::new();
	
	for _ in 0..threads {
		split.push(Vec::new());
	}
	
	let mut t = 0;
	
	for w in work {
		split[t].push(w);
		t += 1;
		
		if t >= threads {
			t = 0;
		}
	}
	
	let mut handles = Vec::new();
	
	for tw in split {
		let f = func.clone();
		handles.push(::thread::spawn(move || {
			for w in tw {
				f(w);
			}
		}));
	}
	
	for handle in handles {
		let _ = handle.join();
	}
}

pub fn partial_ord_min<T: PartialOrd>(v1: T, v2: T) -> T {
	if v1 < v2 {
		v1
	} else {
		v2
	}
}

pub fn partial_ord_min3<T: PartialOrd>(v1: T, v2: T, v3: T) -> T {
	partial_ord_min(partial_ord_min(v1, v2), v3)
}

pub fn partial_ord_max<T: PartialOrd>(v1: T, v2: T) -> T {
	if v1 > v2 {
		v1
	} else {
		v2
	}
}

pub fn partial_ord_max3<T: PartialOrd>(v1: T, v2: T, v3: T) -> T {
	partial_ord_max(partial_ord_max(v1, v2), v3)
}