c2rs

This is a macro that converts the struct of the c language into a rust struct

Crates.io MIT licensed

use

``` // Cargo.toml

[dependencies] c2rs = "0.1.2"

```

Example

``` fn test(){ use c2rs::c2rs_def;

type DWORD = u32;
const SIZE: usize = 10;

c2rs_def!(
    struct A{
        DWORD var1;
        DWORD var2;
        union {
            DWORD var4;
            DWORD var5;   
        }var3;

        struct {
            u8 var7;
        }var6;

        DWORD array[SIZE];
    };

    struct B{
        u8 var1;
    };

    // ....
);

let mut buffer = [1u8; 1024];

unsafe{
    let mut buf = A::from_mut_bytes(buffer.as_mut_ptr());
    let buf = buf.as_mut().unwrap();
    buf.var1 = 10;

    assert_eq!(10, buf.var1);
    assert_eq!(10, buffer[0]);

    let mut b = B::from_mut_bytes(buffer.as_mut_ptr()).as_mut().unwrap();

    assert_eq!(10, b.var1);

}

} ```