/usr/share/perl5/Type/Tiny/Manual/UsingWithMoo.pod is in libtype-tiny-perl 1.000005-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | =pod
=encoding utf-8
=head1 NAME
Type::Tiny::Manual::UsingWithMoo - how to use Type::Tiny and Type::Library with Moo
=head1 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);
}
}
=head1 DESCRIPTION
Type::Tiny is tested with L<Moo> 1.001000 and above.
Type::Tiny overloads C<< &{} >>. Moo supports using objects that overload
C<< &{} >> as C<isa> constraints, so Type::Tiny objects can directly be used
in C<isa>.
Moo doesn't support C<< coerce => 1 >> but requires a coderef as a coercion.
However, again it supports using objects that overload C<< &{} >>, which
Type::Coercion does, allowing C<< 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.
=head2 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 C<< Type::Tiny->new >>, then
consider using L<Sub::Quote> to quote the coderef; this allows you to take
advantage of inlining without having to write your own inlining routines.
See also L<Type::Tiny::Manual::Optimization>.
=head1 SEE ALSO
For examples using Type::Tiny with L<Moo> see the SYNOPSIS sections of
L<Type::Tiny> and L<Type::Library>, and the
L<Moo integration tests|https://github.com/tobyink/p5-type-tiny/tree/master/t/30-integration/Moo>
in the test suite.
=head1 AUTHOR
Toby Inkster E<lt>tobyink@cpan.orgE<gt>.
=head1 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.
=head1 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.
=cut
|