This crate provides macros to generate bitfield-like struct.
Branch: master
Clone or download
Latest commit 152baec Oct 26, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Fix clippy warnings Apr 22, 2018
src Use inclusive range Oct 26, 2018
tests Implement BitRange for more intger size combination Aug 1, 2018
.gitignore Initial implementation Jul 18, 2016
.travis.yml Add support for 128 bits integer May 11, 2018
Cargo.toml bitfield 0.13.1 Oct 26, 2018
LICENSE-APACHE Add licenses Jul 17, 2017
LICENSE-MIT Add licenses Jul 17, 2017
README.md small documentation improvement Apr 20, 2018
multitest.toml Update rustfmt Aug 1, 2018

README.md

rust-bitfield

This crate provides macros to generate bitfield-like struct.

This a complete rewrite of the bitfield crate. You can find the previous version in the rust-bitfield-legacy repository. This version works on the stable version of rustc and use a different syntax with different possibility.

Example

An IPv4 header could be described like that:

bitfield!{
    struct IpV4Header(MSB0 [u8]);
    u32;
    get_version, _: 3, 0;
    get_ihl, _: 7, 4;
    get_dscp, _: 13, 8;
    get_ecn, _: 15, 14;
    get_total_length, _: 31, 16;
    get_identification, _: 47, 31;
    get_df, _: 49;
    get_mf, _: 50;
    get_fragment_offset, _: 63, 51;
    get_time_to_live, _: 71, 64;
    get_protocol, _: 79, 72;
    get_header_checksum, _: 95, 79;
    get_source_address, _: 127, 96;
    get_destination_address, _: 159, 128;
}

In this example, all the fields are read-only, the _ as setter name signals to skip the setter method. The range at the end (e.g. 3, 0) defines the bit range where the information is encoded.

Documentation

The documentation of the released version is available on doc.rs.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.