:: RootR ::  Hosting Order Map Login   Secure Inter-Network Operations  
 
Type::Tiny::Manual::UsingWithMoo(3pm) - phpMan

Command: man perldoc info search(apropos)  


Type::Tiny::Manual::UsingWithMoUsermContributed Perl DocumenType::Tiny::Manual::UsingWithMoo(3pm)



NAME
       Type::Tiny::Manual::UsingWithMoo - how to use Type::Tiny and Type::Library with Moo

SYNOPSIS
          {
             package Person;

             use Moo;
             use Types::Standard qw( Str Int );
             use Type::Utils qw( declare as where inline_as coerce from );

             has name => (
                is      => "ro",
                isa     => Str,
             );

             my $PositiveInt = declare
                as        Int,
                where     {  $_ > 0  },
                inline_as { "$_ =~ /^[0-9]+\$/ and $_ > 0" };

             coerce $PositiveInt, from Int, q{ abs $_ };

             has age => (
                is      => "rwp",
                isa     => $PositiveInt,
                coerce  => $PositiveInt->coercion,
             );

             sub get_older {
                my $self = shift;
                my ($years) = @_;
                $PositiveInt->assert_valid($years);
                $self->_set_age($self->age + $years);
             }
          }

DESCRIPTION
       Type::Tiny is tested with Moo 1.001000 and above.

       Type::Tiny overloads "&{}". Moo supports using objects that overload "&{}" as "isa"
       constraints, so Type::Tiny objects can directly be used in "isa".

       Moo doesn't support "coerce => 1" but requires a coderef as a coercion.  However, again it
       supports using objects that overload "&{}", which Type::Coercion does, allowing "coerce =>
       $Type->coercion" to work.

       Type::Tiny hooks into Moo's HandleMoose interface to ensure that type constraints get
       inflated to Moose type constraints if and when Moo inflates your class to a full Moose
       class.

   Optimization
       The usual advice for optimizing type constraints applies: use type constraints which can
       be inlined whenever possible, and define coercions as strings rather than coderefs.

       Upgrading to Moo 1.002000 or above should provide a slight increase in speed for type
       constraints, as it allows them to be inlined into accessors and constructors.

       If creating your own type constraints using "Type::Tiny->new", then consider using
       Sub::Quote to quote the coderef; this allows you to take advantage of inlining without
       having to write your own inlining routines.

       See also Type::Tiny::Manual::Optimization.

SEE ALSO
       For examples using Type::Tiny with Moo see the SYNOPSIS sections of Type::Tiny and
       Type::Library, and the Moo integration tests <https://github.com/tobyink/p5-type-
       tiny/tree/master/t/30-integration/Moo> in the test suite.

AUTHOR
       Toby Inkster <tobyink AT cpan.org>.

COPYRIGHT AND LICENCE
       This software is copyright (c) 2013-2014 by Toby Inkster.

       This is free software; you can redistribute it and/or modify it under the same terms as
       the Perl 5 programming language system itself.

DISCLAIMER OF WARRANTIES
       THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
       WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
       PURPOSE.



perl v5.20.0                                2014-09-02      Type::Tiny::Manual::UsingWithMoo(3pm)


/man
rootr.net - man pages