use B 'perlstring';
use Sub::Defer ();
-our $VERSION = '1.000008'; # 1.0.8
+our $VERSION = '1.001000'; # 1.1.0
$VERSION = eval $VERSION;
require Moo::sification;
to use them in L<Moose> code without anybody ever noticing you aren't using
L<Moose> everywhere.
+L<Moo> will also create L<Moose type constraints|Moose::Manual::Types> for
+classes and roles, so that C<< isa => 'MyClass' >> and C<< isa => 'MyRole' >>
+work the same as for L<Moose> classes and roles.
+
Extending a L<Moose> class or consuming a L<Moose::Role> will also work.
So will extending a L<Mouse> class or consuming a L<Mouse::Role> - but note
die "$_[0] is not a number!" unless looks_like_number $_[0]
},
+Note that the return value is ignored, only whether the sub lives or
+dies matters.
+
L<Sub::Quote aware|/SUB QUOTE AWARE>
Since L<Moo> does B<not> run the C<isa> check before C<coerce> if a coercion
If you set this to just C<1>, the predicate is automatically named
C<has_${attr_name}> if your attribute's name does not start with an
-underscore, or <_has_${attr_name_without_the_underscore}> if it does.
+underscore, or C<_has_${attr_name_without_the_underscore}> if it does.
This feature comes from L<MooseX::AttributeShortcuts>.
=item * C<builder>
at the end of your class to get an inlined (i.e. not horribly slow)
constructor. Moo does it automatically the first time ->new is called
-on your class.
+on your class. (C<make_immutable> is a no-op in Moo to ease migration.)
An extension L<MooX::late> exists to ease translating Moose packages
to Moo by providing a more Moose-like interface.