Macro bitfield::bitfield_debug [] [src]

macro_rules! bitfield_debug {
    (struct $name:ident; $($rest:tt)*) => { ... };
    ($debug_struct:ident, $self:ident, #[$attribute:meta] $($rest:tt)*) => { ... };
    ($debug_struct:ident, $self:ident, pub $($rest:tt)*) => { ... };
    ($debug_struct:ident, $self:ident, _, $setter:tt: $($exprs:expr),*; $($rest:tt)*) => { ... };
    ($debug_struct:ident, $self:ident, $type:ty; $($rest:tt)*) => { ... };
    ($debug_struct:ident, $self:ident, $getter:ident, $setter:tt: $msb:expr, $lsb:expr, $count:expr;
     $($rest:tt)*) => { ... };
    ($debug_struct:ident, $self:ident, $getter:ident, $setter:tt: $($exprs:expr),*; $($rest:tt)*) => { ... };
    ($debug_struct:ident, $self:ident, into $into:ty, $($rest:tt)*) => { ... };
    ($debug_struct:ident, $self:ident, $type:ty, $($rest:tt)*) => { ... };
    ($debug_struct:ident, $self:ident, ) => { ... };
}

Generates a fmt::Debug implementation.

This macros must be called from a impl Debug for ... block. It will generate the fmt method.

In most of the case, you will not directly call this macros, but use bitfield.

The syntax is struct TheNameOfTheStruct folowowed by the syntax of bitfield_fields.

The write-only fields are ignored.

Example

bitfield_struct!{struct FooBar(u32)}
impl FooBar{
    bitfield_fields!{
       u32;
       field1, _: 7, 0;
       field2, _: 31, 24;
    }
}

impl std::fmt::Debug for FooBar {
    bitfield_debug!{
       struct FooBar;
       field1, _: 7, 0;
       field2, _: 31, 24;
    }
}

fn main() {
    let foobar = FooBar(0x11223344);
    println!("{:?}", foobar);
}