I am happy to publish on code.dlang.org for the first time:
https://code.dlang.org/packages/alid Thanks to everyone who made registering a dub package so easy! :) 1) Currently, the main module in `alid` is `cached`, which - caches range elements to ensure each is executed once (most useful with generator ranges that use e.g. `map`), - as a result, elevates InputRanges to ForwardRanges (plus opIndex). 2) But I like `errornogc` as well, which helps throw Error objects from @nogc code. Copying from the README: * `cached` is for executing elements only once while not holding on to already popFront'ed elements for too long. `cached` was the main topic of Ali's DConf 2022 lightning talk. * `circularblocks` was written for storing range elements by cached. It can be used independently. * `blockreusable` was written as storage blocks for circularblocks. It can be used independently. * `errornogc` was needed for throwing Errors from @nogc code. It can be used independently. * `test` contains some helper utilities for unit testing. Ali
