NAME
    Monjon - create your Moo objects as blessed scalar refs

SYNOPSIS
            use v5.14;
        
            package MyClass {
                    use Monjon;
                    has id   => (is => 'ro', pack => 'L');
                    has name => (is => 'rw', pack => 'Z32');
            }
        
            my $obj = MyClass->new(id => 42, name => "The Answer");

DESCRIPTION
    Monjon is a subclass of Moo designed for efficient memory usage when you
    need to deal with many thousands of very simple objects.

    Attributes are stored using a variation on the `pack`/`unpack` technique
    used by BrowserUK <http://www.perlmonks.org/?node_id=171588> on PerlMonks
    at <http://www.perlmonks.org/?node_id=1040313>.

    However, inside-out attributes are also offered for data which cannot be
    reasonably serialized to a string. (But if you do need to store things
    like references, perhaps Monjon is not for you.)

  Differences from Moo
    `has`
        The attribute spec accepts an additional option `pack`. The presence
        of this key in the specification makes your attribute be stored in the
        object's packed string. Attributes without a `pack` option will be
        stored inside-out.

    `extends`
        Extending non-Monjon classes is not supported. (But who knows? It
        could work!)

    `before`, `after`, and `around`
        Monjon is sometimes forced to rebuild constructors and accessors at
        run-time, which may lead to method modifiers being overwritten, if you
        have tried to apply any modifiers to them.

        Basically, don't apply method modifiers to accessors.

  Benchmarking
    Monjon's accessors are significantly slower than Moo's, especially when
    Moo is able to make use of Class::XSAccessor.

    However, if your data consists of mostly numbers, booleans, and small or
    fixed-width strings, Monjon is likely to consume a lot less memory per
    instance.

    See:
    <https://github.com/tobyink/p5-monjon/blob/master/devel.bench/bench.pl>.

  What's a Monjon?
    It's a very shy little wallaby, and it's near-threatened. See
    <http://en.wikipedia.org/wiki/Monjon>.

    If you like this module and want to help monjons, please see
    <http://www.australianwildlife.org.au/Artesian-Range.aspx>.

CAVEATS
    Unless you have Moo 1.004_003 exactly (i.e. neither an older nor a newer
    version of Moo), multiple inheritance is unlikely to work for Monjon
    classes.

BUGS
    Please report any bugs to
    <http://rt.cpan.org/Dist/Display.html?Queue=Monjon>.

SEE ALSO
    Moo.

    <http://www.perlmonks.org/?node_id=1040313>.

AUTHOR
    Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE
    This software is copyright (c) 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.

