round_mult 0.1.4

A tiny library to round a number up or down to a multiplier.
Documentation
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use round_mult::NonZeroPow2;

pub fn bench_round_down(c: &mut Criterion) {
	let mult32 = NonZeroPow2::<usize>::v32();

	let mut g = c.benchmark_group("Round Down");

	g.bench_function("round_mult 32 NZP", |b| {
		b.iter(|| {
			black_box(round_mult::down(black_box(109), black_box(mult32)));
		});
	});

	g.bench_function("round_mult 32 NZ", |b| {
		b.iter(|| {
			black_box(round_mult::down(
				black_box(109),
				black_box(mult32.get_nonzero()),
			));
		});
	});

	g.finish();
}

pub fn bench_round_up(c: &mut Criterion) {
	let mult32 = NonZeroPow2::<usize>::v32();
	let mut g = c.benchmark_group("Round Up");

	g.bench_function("lib round up NZP", |b| {
		b.iter(|| {
			black_box(round_mult::up(black_box(100usize), black_box(mult32)))
		});
	});

	g.bench_function("std round up NZP", |b| {
		b.iter(|| {
			black_box(black_box(100usize).checked_next_multiple_of(32))
		});
	});
}

criterion_group!(group_round_down, bench_round_down);
criterion_group!(group_round_up, bench_round_up);
criterion_main!(group_round_down, group_round_up);