NAME

    Object::Pad::ClassAttr::Struct - declare an Object::Pad class to be
    struct-like

SYNOPSIS

       use Object::Pad;
       use Object::Pad::ClassAttr::Struct;
    
       class Colour :Struct {
          # These get :param :mutator automatically
          has $red   = 0;
          has $green = 0;
          has $blue  = 0;
    
          # Additional methods are still permitted
          method lightness {
             return ($red + $green + $blue) / 3;
          }
       }
    
       my $cyan = Colour->new( green => 1, blue => 1 );

DESCRIPTION

    This module provides a third-party class attribute for
    Object::Pad-based classes, which applies some attributes automatically
    to every slot added to the class, as a convenient shortcut for making
    structure-like classes.

CLASS ATTRIBUTES

 :Struct

       class Name :Struct ... { ... }

    Automatically applies the :param and :mutator attributes to every slot
    defined on the class, meaning the constructor will accept parameters
    for each slot to initialise the value, and each slot will have an
    lvalue mutator method.

    In addition, the class itself gains the :strict(params) attribute,
    meaning the constructor will check parameter names and throw an
    exception for unrecognised names.

AUTHOR

    Paul Evans <leonerd@leonerd.org.uk>