[][src]Macro vulkayes_core::debugize_struct

macro_rules! debugize_struct {
    (
		$input: expr;
		{
			$(
				$field: ident: $({ $($recursion: tt)+ } from)? $(* $([$size_target: ident])? )? $target: ident $(| { $($closure: tt)+ })?;
			)+
		}
	) => { ... };
    (
		$input: expr;
		: { $($recursion: tt)+ } from $target: ident
	) => { ... };
    (
		$input: expr;
		: { $($recursion: tt)+ } from *$target: ident
	) => { ... };
    (
		$input: expr;
		: { $($recursion: tt)+ } from *[$size_target: ident] $target: ident
	) => { ... };
    (
		$input: expr;
		: $target: ident | { $($closure: tt)+ }
	) => { ... };
    (
		$input: expr;
		: *[$size_target: ident] $target: ident
	) => { ... };
    (
		$input: expr;
		: *$target: ident
	) => { ... };
    (
		$input: expr;
		: $target: ident
	) => { ... };
}

let debuggable_value = unsafe {
	debugize_struct!(
		create_info;
		{
			// Simple alias
			foo: foo; // => create_info.foo
			// Depointerization
			bar: *p_bar; // => create_info.p_bar.as_ref()
			// Slice depointerization - unsafe
			baz: *[baz_size] p_baz; // => create_info.p_baz.as_ref().map(|r| std::slice::from_raw_parts(r, create_info.baz_size))
			// Recursion
			foo_r: { foo: foo; } from foo_r;
			bar_r: { bar: *p_bar; } from *p_bar_r;
			baz_r: { baz: *[baz_size] p_baz; } from *[baz_r_size] p_baz_r;
			// Custom closure
			qux: n_qux | { n_qux + 1 }; // (|n_qux| { n_qux + 1 })(create_info.n_qux)
		}
	)
};

dbg!(debuggable_value);