#getter-setter #bitflags #automatic #compact #single #field #multiple

macro bool_to_bitflags

A library to compact multiple bools into a single bitflags field automatically with getters and setters

4 releases

0.1.3 Jun 22, 2024
0.1.2 May 14, 2024
0.1.1 Apr 2, 2024
0.1.0 Jan 3, 2024

#445 in Procedural macros

Download history 102/week @ 2024-10-26 218/week @ 2024-11-02 541/week @ 2024-11-09 603/week @ 2024-11-16 526/week @ 2024-11-23 263/week @ 2024-11-30 387/week @ 2024-12-07 156/week @ 2024-12-14 70/week @ 2024-12-21 153/week @ 2024-12-28 174/week @ 2025-01-04 308/week @ 2025-01-11 272/week @ 2025-01-18 231/week @ 2025-01-25 328/week @ 2025-02-01 469/week @ 2025-02-08

1,366 downloads per month

MIT license

29KB
672 lines

Bool To Bitflags

A library to compact multiple bools into a single bitflags field automatically with getters and setters.

See the documentation on docs.rs.


lib.rs:

bool-to-bitflags

A struct attribute macro to pack structs with multiple boolean fields into efficent byte packing.

This macro will make struct fields of type bool and Option<bool> be packed into a field called __generated_flags.

This field is responsible for storing the packed bits, and should not be messed with manually, other than to initialize as all-false with {StructName}GeneratedFlags::empty() or all-true with {StructName}GeneratedFlags::all().

Arguments

Argument Name Type Default Value Description
getter_prefix String The prefix before getter names
setter_prefix String set_ The prefix before setter names
private_getters bool Field Visibility If true, getters are forced to be crate-private
private_setters bool Field Visibility If true, setters are forced to be crate-private
document_setters bool false If true, field documentation is used for setters, instead of getters
owning_setters bool false If true, setters take self and return self instead of taking &mut self

MSRV

The Minimum Supported Rust Version of this crate is 1.65.

It is considered a breaking change to raise this requirement.

Dependencies

~0.6–1.3MB
~28K SLoC