MooX::XSConstructor - glue between Moo and Class::XSConstructor
package Foo; use Moo; use MooX::XSConstructor; # do normal Moo stuff here
MooX::XSConstructor will look at your class attributes, and see if it could be built using the simple constructor that Class::XSConstructor is able to provide.
If your class is too complicated, it is a no-op.
If your class is simple enough, you will hopefully get a faster constructor.
Things that are deemed too complicated if they appear in any attributes (even an inherited one):
Eager builders and defaults. (Lazy builders and defaults are fine.)
Type constraints. (Except Type::Tiny, which is fine.)
Also if your class has a
FOREIGNBUIDARGS method, it will be too complicated. (The default
BUILDARGS inherited from Moo::Object is fine.)
So what Moo features are okay?
Required versus optional attributes, Type::Tiny type constraints (but not coercions), reader/writer/predicate/clearer, lazy defaults/builders, and delegation (
Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=MooX-XSConstructor.
You may also be interested in Class::XSAccessor. Moo already includes all the glue to interface with that, so a MooX module like this one isn't necessary.
Toby Inkster <email@example.com>.
This software is copyright (c) 2018 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.
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.