itertools
itertools copied to clipboard
all_equal vs. all_equal_value
It seems to be a fair expectation that all_equal_value().is_ok() should agree with all_equal(). But on an empty iterator the former returns false, while the latter returns true.
Can be resolved by keeping the current behaviour of all_equal (which is the mathematical definition whereby on an empty iterator vacuously all items are equal) and changing the return type of all_equal_value to Result<Option<Iter::Item>, (Iter::Item, Iter::Item)>.