Types::...rd::Dict(3)
πΈ NAME πΈ
Okay so bestie, the page we're on is Types::...rd::Dict(3) from the User Contributed Perl Documentation crowd, and it's all about Types::Standard::Dict β the exporter utility + utility functions for the Dict type constraint. Slay. π
π¨ STATUS π¨
This module is not covered by the Type-Tiny stability policy. No cap, that's the whole status.
π¦ DESCRIPTION π¦
This is mostly internal code, but it has one public-facing function. Main character energy for exactly one function, honestly iconic.
β¨ Function β¨
Types::Standard::Dict::combine(@dicts)β creates a combined type constraint, and it's attempting to be permissive. Lowkey generous of it.
The following two types should be equivalent:
my $type1 = Types::Standard::Dict::combine(
Dict[ name => Str ],
Dict[ age => Int, Slurpy[HashRef[Int]] ],
Dict[ id => Str, name => ArrayRef, Slurpy[ArrayRef] ],
);
my $type2 = Dict[
name => Str|ArrayRef,
age => Int,
id => Str,
Slurpy[ HashRef[Int] | ArrayRef ],
];
Note that a hashref satisfying the combined type wouldn't satisfy any of the individual Dict constraints, nor vice versa! Like, the overlap is doing its own thing. π
This function can be exported:
use Types::Standard -types;
use Types::Standard::Dict combine => { -as => 'combine_dicts' };
my $type1 = combine_dicts(
Dict[ name => Str ],
Dict[ age => Int, Slurpy[HashRef[Int]] ],
Dict[ id => Str, name => ArrayRef, Slurpy[ArrayRef] ],
);
π«Ά Exports π«Ά
Types::Standard::Dict can be used experimentally as an exporter. Experimental, bestie β read it and weep (affectionately). π
use Types::Standard 'Str';
use Types::Standard::Dict Credentials => { of => [
username => Str,
password => Str,
] };
This will export the following functions into your namespace:
"Credentials"is_Credentials( $value )assert_Credentials( $value )to_Credentials( $value )
Multiple types can be exported at once:
use Types::Standard -types;
use Types::Standard::Dict (
Credentials => { of => [
username => Str,
password => Str,
] },
Headers => { of => [
'Content-Type' => Optional[Str],
'Accept' => Optional[Str],
'User-Agent' => Optional[Str],
] },
);
# Exporting this separately so it can use the types defined by
# the first export.
use Types::Standard::Dict (
HttpRequestData => { of => [
credentials => Credentials,
headers => Headers,
url => Str,
method => Enum[ qw( OPTIONS HEAD GET POST PUT DELETE PATCH ) ],
] },
);
assert_HttpRequestData( {
credentials => { username => 'bob', password => 's3cr3t' },
headers => { 'Accept' => 'application/json' },
url => 'http://example.net/api/v1/stuff',
method => 'GET',
} );
It's possible to further constrain the hashref using "where":
use Types::Standard::Dict MyThing => { of => [ ... ], where => sub { ... } };
π BUGS π
Please report any bugs to <https://github.com/tobyink/p5-type-tiny/issues>. Do it for the plot. π
π SEE ALSO π
Types::Standard.
π AUTHOR π
Toby Inkster <tobyink@cpan.org>. Iconic. β¨
π COPYRIGHT AND LICENCE π
This software is copyright (c) 2013-2025 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.
mwah π this page came from perl v5.42.2, dated 2026-04-07, and the footer is serving Types::...rd::Dict(3) β bye bestie, go combine some dicts responsibly π«Άπ
π¦ where this page comes from
- alpine 3.24: perl-type-tiny-doc 2.010001-r0 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms