The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
NAME
    List::Objects::Types - Type::Tiny-based types for
    List::Objects::WithUtils

SYNOPSIS
      package Foo;

      use List::Objects::Types -all;
      use List::Objects::WithUtils;
      use Moo;
      use MooX::late;

      has my_array => (
        is  => 'ro',
        isa => ArrayObj,
        default => sub { array }
      );

      has static_array => (
        is  => 'ro',
        isa => ImmutableArray,
        coerce  => 1,
        default => sub { [qw/ foo bar /] }
      );

      has my_hash => (
        is  => 'ro',
        isa => HashObj,
        coerce  => 1,
        # Coercible from a plain HASH:
        default => sub { +{} }
      );

      use Types::Standard 'Int', 'Num';
      has my_ints => (
        is  => 'ro',
        # Nums added to this array_of(Int) are coerced to Ints:
        isa => TypedArray[ Int->plus_coercions(Num, 'int($_)') ],
        coerce  => 1,
        default => sub { [1, 2, 3.14] }
      );

DESCRIPTION
    A small set of Type::Tiny-based types & coercions for
    List::Objects::WithUtils.

    Also see MoopsX::ListObjects, which provides Moops class-building sugar
    with List::Objects::WithUtils integration.

   ArrayObj
    An object that consumes List::Objects::WithUtils::Role::Array.

    Can be coerced from a plain ARRAY; a shallow copy is performed.

   HashObj
    An object that consumes List::Objects::WithUtils::Role::Hash.

    Can be coerced from a plain HASH; a shallow copy is performed.

   ImmutableArray
    An object that consumes
    List::Objects::WithUtils::Role::Array::Immutable.

    Can be coerced from a plain ARRAY or an "ArrayObj"; a shallow copy is
    performed.

   TypedArray
    An object that consumes List::Objects::WithUtils::Role::Array::Typed.

    Not coercible.

   TypedArray[`a]
    TypedArray can be parameterized with another type constraint. For
    example, the type constraint "TypedArray[Num]" will accept
    "array_of(Num, 1, 2, 3.14159)", and will also accept "array_of(Int, 1,
    2, 3)" because "Int" is a subtype of "Num".

    Can be coerced from a plain ARRAY or an "ArrayObj"; a shallow copy is
    performed. If the parameter also has a coercion, this will be applied to
    each item in the new array.

    (The "examples/" directory that comes with this distribution contains
    some examples of parameterized & coercible TypedArrays.)

   ImmutableTypedArray
    An object that isa List::Objects::WithUtils::Array::Immutable::Typed.

    Not coercible.

   ImmutableTypedArray[`a]
    ImmutableTypedArray can be parameterized with another type constraint,
    like "TypedArray".

    Can be coerced from a plain ARRAY or an "ArrayObj".

   TypedHash
    An object that consumes List::Objects::WithUtils::Role::Hash::Typed.

    Not coercible.

   TypedHash[`a]
    TypedHash can be parameterized with another type constraint, like
    "TypedArray".

    Can be coerced from a plain HASH or a "HashObj". If the parameter also
    has a coercion, this will be applied to each value in the new hash.

   ImmutableTypedHash
    An object that isa List::Objects::WithUtils::Hash::Immutable::Typed.

    Not coercible.

   ImmutableTypedHash[`a]
    ImmutableTypedHash can be parameterized with another type constraint,
    like "TypedHash".

    Can be coerced from a plain HASH or an "HashObj".

AUTHOR
    Jon Portnoy <avenj@cobaltirc.org> with significant contributions from
    Toby Inkster (CPAN: TOBYINK)