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; has my_array => ( is => 'ro', isa => ArrayObj, default => sub { array } ); has my_hash => ( is => 'ro', isa => HashObj, default => sub { hash } ); has static_array => ( is => 'ro', isa => ImmutableArray, default => sub { immarray(qw/ foo bar /) } ); DESCRIPTION A small set of Type::Tiny-based types & coercions. 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 isa List::Objects::WithUtils::Array::Immutable. Can be coerced from a plain ARRAY or an "ArrayObj"; a shallow copy is performed. TypedArray An object that isa List::Objects::WithUtils::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. AUTHOR Jon Portnoy with significant helpful contributions from Toby Inkster (CPAN: TOBYINK)