1. My motivation for having the `byte < 128` check is that `CharEq` is a pub trait, and a user impl of CharEq that claims `only_ascii` will still be asked about non-ascii char. Further, if it lied about only_ascii and did match one of those, it would allow create invalid str with the iterator.   Not sure how to deal with that, user error or safety hole?

2. Just because it felt and looked the best, allowing to factor the slice code into one place. I did a lot trial implementations without being happy with the expression of it.. happy for suggestions. I didn't benchmark this particular version, but I will do it!