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.

https://travis-ci.org/brookst/rust-cast-shootout.svg?branch=master

Benchmarks

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

Generating

This readme is generated from the shootout.sh bash script.