Crates.io | minus-one |
lib.rs | minus-one |
version | 0.1.0 |
source | src |
created_at | 2023-04-06 00:48:38.016719 |
updated_at | 2023-04-06 00:48:38.016719 |
description | A proc-macro crate to subtract one from a number |
homepage | |
repository | |
max_upload_size | |
id | 831759 |
size | 2,839 |
let max_byte: u8 = minus_one!(256);
assert_eq!(max_byte, 255);
let min_byte: u8 = minus_one!(1);
assert_eq!(min_byte, 0);
Often in firmware-land, you are using a register where a register value of 0 corresponds to a value of 1. This is a common pattern in hardware. However, this can be a headache when you are trying to write a value to the register, and you have to remember to subtract 1 from the value you want to write. In addition, sometimes it is not even possible to subtract 1 because the value you want to write is the maximum value.
Suppose you have a u8
and you want to write something which represents scalar 256. You cannot subtract 1 from 256
because 255 is the maximum value of an u8
.
The minus_one!
macro allows you to write minus_one!(256)
and get 255
back, and likewise minus_one!(1)
will
return 0
.