| Crates.io | c2rs |
| lib.rs | c2rs |
| version | 0.1.2 |
| created_at | 2021-12-23 05:36:13.495907+00 |
| updated_at | 2021-12-23 09:50:32.914667+00 |
| description | C struct to Rust struct |
| homepage | |
| repository | https://github.com/editso/c2rs |
| max_upload_size | |
| id | 502059 |
| size | 14,821 |
This is a macro that converts the struct of the c language into a rust struct
// Cargo.toml
[dependencies]
c2rs = "0.1.2"
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);
}
}