# Structure: Derive

## Derive​

This crate contains procedural macros for Stronghold.

#### GuardDebug​

The GuardDebug macro is used to block inspection of a data structure. It implements the Debug trait and explicitly blocks the reading of the internal data on the structure its derived on. Instead, the data will be returned out as a (guarded) string.

##### Example:​
#[derive(GuardDebug)]struct Foo {    some_data: String}...let foo = Foo { some_data: "Some data"};println!("{:?}", foo);...> Foo(guarded)

#### RequestPermissions​

Implements the VariantPermission for struct/unions with PermissionValue(1). For enums, it implements ToPermissionVariants, which creates an according new enum <Ident>Permission with Unit variants, and implements VariantPermission by assigning different PermissionValue for each variant. The permission value is the "index" in the enum as exponent for the power of 2, thus from top to bottom 1, 2, 4, 8...