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 set of Type::Tiny-based types & coercions matching the list objects
    found in List::Objects::WithUtils.

   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".

   InflatedHash
    An object that isa List::Objects::WithUtils::Hash::Inflated.

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

   InflatedHash[`a]
    InflatedHash can be parameterized with a list of methods expected to be
    available.

  SEE ALSO
    MoopsX::ListObjects for integration with Moops class-building sugar.

    List::Objects::WithUtils for more on the relevant list objects.

    Type::Tiny for more on type methods & overloads.

    Types::Standard for a set of useful base types.

    Type::Library for details on importing types.

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

