typesize_derive

Derive Macro TypeSize

Source
#[derive(TypeSize)]
{
    // Attributes available to this derive:
    #[typesize]
}
Expand description

Implements TypeSize automatically for a struct or enum.

Use #[typesize(skip)] on a field to assume it does not manage any external memory.

Use #[typesize(with = path::to::fn)] on a field to specify a custom extra_size for that field. The function accepts a reference to the type of the field.

This will avoid requiring TypeSize to be implemented for this field, however may lead to undercounted results if the assumption does not hold.

§Struct Mode

TypeSize::extra_size will be calculated by adding up the extra_size of all fields.

§Enum Mode

TypeSize::extra_size will be calculated by adding up the extra_size of all of the fields of the active enum variant.

§Union Mode

Unions are unsupported as there is no safe way to calculate the extra_size, implement typesize::TypeSize manually.