hioff

Crates.iohioff
lib.rshioff
version0.1.1
sourcesrc
created_at2023-08-22 08:57:57.531508
updated_at2023-12-25 08:34:15.199232
descriptionProvides C-like macros: offset_of and container_of
homepage
repositoryhttps://gitee.com/1467792822/hioff
max_upload_size
id950819
size16,925
hunting (h1467792822)

documentation

README

hioff

The original name is hun_offsetof. Provides C-like macros: offset_of and container_of

interfaces

offset_of!(type, member) -> usize;
container_of!(&obj, type, member) -> &type;
container_of_mut!(&obj, type, member) -> &mut type;

Examples


extern crate hun_offsetof as hun;

#[repr(C)]
struct Bar {
	key:	i32,
	value:	i32,
}

#[repr(C)]
struct Foo {
	key:	i32,
	value:	[Bar; 2],
}

assert_eq!(hun::offset_of!(Bar, value), 4);
assert_eq!(hun::offset_of!(Foo, value[1].key), 12);

let foo = Foo {
	key: 1,
	value: [ Bar { key: 2, value: 2}, Bar { key: 3, value: 3 }],
};
let value = &foo.value[1].value;

let obj = unsafe { hun::container_of!(value, Foo, value[1].value) };
assert_eq!(obj as *const _, &foo as *const _);
Commit count: 0

cargo fmt