NAME
    Iterator::Flex - Iterators with flexible behaviors

VERSION
    version 0.29

SYNOPSIS
DESCRIPTION
    Note! "Iterator::Flex" is alpha quality software.

  What is It?
    "Iterator::Flex" provides iterators that can:

    *   rewind to the beginning, keeping track of state (e.g. cycles which
        always know the previous value).

    *   reset to the initial state

    *   serialize, so that you can restart from where you left off,

    *   signal exhaustion by returning a sentinel value (e.g. "undef") or
        throwing an exception, and provide a test for exhaustion via the
        "is_exhausted" method.

    *   wrap existing iterators so that they have the same exhaustion
        interface as your own iterators

    *   provide history via "prev" and "current" methods.

    These are *optional* things behaviors that an iterator can support. Not
    all iterators need the bells and whistles, but sometimes they are very
    handy.

  Where are the iterators?
    See Iterator::Flex::Common for a set of common iterators. These are
    pre-made for you. See Iterator::Flex::Manual::Using for how to use them.

  I need to write my own.
    See Iterator::Flex::Manual::Authoring for how to write your own flexible
    iterators.

    See Iterator::Flex::Manual::Internals for how everything links together.

  Show me the Manual
    Iterator::Flex::Manual

  What doesn't work?  What should frighten me away?
    Iterator::Flex::Manual::Caveats

INTERNALS
SUPPORT
  Bugs
    Please report any bugs or feature requests to
    bug-iterator-flex@rt.cpan.org or through the web interface at:
    <https://rt.cpan.org/Public/Dist/Display.html?Name=Iterator-Flex>

  Source
    Source is available at

      https://gitlab.com/djerius/iterator-flex

    and may be cloned from

      https://gitlab.com/djerius/iterator-flex.git

AUTHOR
    Diab Jerius <djerius@cpan.org>

COPYRIGHT AND LICENSE
    This software is Copyright (c) 2018 by Smithsonian Astrophysical
    Observatory.

    This is free software, licensed under:

      The GNU General Public License, Version 3, June 2007

