We use Moose classes that serialize iterators to various output formats. We describe the iterator as an attribute:
has iterator => (
is => 'ro',
isa => 'CodeRef',
required => 1,
);
This has worked well so far, but lately we used Iterator :: Simple to prepare iterators for later consumption. This means that we can write this:
has iterator => (
is => 'ro',
isa => 'CodeRef|Iterator::Simple::Iterator',
required => 1,
);
And let our serializers accept the iterator class correctly. However, this seems like an incomplete solution.
Moose , ? , Moose:: Util:: TypeConstraints overload:: Overloaded &{}, , - , , Moose.