From 0be527e6210573bc2bae05a32ebb53ba0c72dda7 Mon Sep 17 00:00:00 2001 From: Niklas Elsbrock Date: Sat, 6 Aug 2022 21:45:08 +0200 Subject: [PATCH] add README.md --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..4374e83 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# iter_accumulate +An iterator adaptor for Rust that accumulates the elements from the base iterator +using the provided closure. + +This is similar to `fold()`, but instead of returning the final accumulated result, it returns an +iterator that yields the current accumulated value for each iteration. In other words, the last +element yielded by `accumulate()` is what would have been returned by `fold()` if it was used +instead. + +## Example + +```rust +use iter_accumulate::IterAccumulate; + +let input = [1, 2, 3, 4, 5]; +let mut iter = input.iter().accumulate(1, |acc, i| acc * i); + +assert_eq!(iter.next(), Some(1)); +assert_eq!(iter.next(), Some(2)); +assert_eq!(iter.next(), Some(6)); +assert_eq!(iter.next(), Some(24)); +assert_eq!(iter.next(), Some(120)); +assert_eq!(iter.next(), None); +``` \ No newline at end of file