Learning how to cast a Float into a u8. See the Reddit thread for more information.
The original implementation was written by me for use in Rust-Trace. The min/max approach was suggested by arthurprs and he also genericised the original implementation. The iterator based approach was suggested by thiez.
The current version gives the following timings:
> cargo bench bench
Running target/release/rust-cast-shootout-9f7b1b64b13c3426
running 20 tests
test bench_generic_max ... bench: 0 ns/iter (+/- 0)
test bench_generic_over ... bench: 0 ns/iter (+/- 0)
test bench_generic_under ... bench: 0 ns/iter (+/- 0)
test bench_generic_values ... bench: 0 ns/iter (+/- 0)
test bench_generic_zero ... bench: 0 ns/iter (+/- 0)
test bench_if_max ... bench: 0 ns/iter (+/- 0)
test bench_if_over ... bench: 0 ns/iter (+/- 0)
test bench_if_under ... bench: 0 ns/iter (+/- 0)
test bench_if_values ... bench: 0 ns/iter (+/- 0)
test bench_if_zero ... bench: 0 ns/iter (+/- 0)
test bench_iter_max ... bench: 6 ns/iter (+/- 0)
test bench_iter_over ... bench: 6 ns/iter (+/- 0)
test bench_iter_under ... bench: 6 ns/iter (+/- 1)
test bench_iter_values ... bench: 0 ns/iter (+/- 0)
test bench_iter_zero ... bench: 6 ns/iter (+/- 1)
test bench_minmax_max ... bench: 6 ns/iter (+/- 1)
test bench_minmax_over ... bench: 6 ns/iter (+/- 1)
test bench_minmax_under ... bench: 7 ns/iter (+/- 1)
test bench_minmax_values ... bench: 0 ns/iter (+/- 0)
test bench_minmax_zero ... bench: 6 ns/iter (+/- 0)
test result: ok. 0 passed; 0 failed; 0 ignored; 20 measured
This readme is generated from the shootout.sh bash script.