This file is indexed.

/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