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 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, 2019 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.