NAME
    Types::ReadOnly - type constraints and coercions for read-only data
    structures and locked hashes

SYNOPSIS
       has foo => (is => 'ro', isa => ReadOnly[ArrayRef], coerce => 1);

DESCRIPTION
    This is a type constraint library for write-restricted references.

    This module is built with Type::Tiny, which means that you can use it with
    Moo, Mouse, Moose, or none of the above.

  Type Constraints
    This library provides the following type constraints:

    `ReadOnly`
        A type constraint for references to read-only scalars, arrays and
        hashes. Values don't necessarily need to be deeply read-only to pass
        the type check.

        This type constraint *only works when it is parameterized*.

        This type constraint inherits coercions from its parameter, and makes
        the result read-only (deeply).

    `Locked`
        A type constraint for hashrefs with locked keys (see Hash::Util).

        This type constraint *only works when it is parameterized with
        `HashRef` or a hashref-like type constraint*. For example
        `Locked[HashRef]` or `Locked[ Map[ IpAddr, HostName ] ]`.

        When parameterized with a `Dict` type constraint (see
        Types::Standard), it will use the `Dict` type as the authoritative
        list of keys that the hashref should be locked with, unless the Dict
        includes a slurpy parameter (e.g. `Dict[foo => Int, slurpy
        HashRef[Num]]`).

        This type constraint inherits coercions from its parameter, and
        applies `lock_ref_keys` to the result.

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

SEE ALSO
    Type::Tiny::Manual, Hash::Util, Const::Fast, MooseX::Types::Ro.

AUTHOR
    Toby Inkster <tobyink@cpan.org>.

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