Skip to content

Commit 59a34cb

Browse files
committed
Switch FixedPatternConsumer to be over Sequence
1 parent c56dc76 commit 59a34cb

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

Sources/_StringProcessing/Algorithms/Consumers/FixedPatternConsumer.swift

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
//
1010
//===----------------------------------------------------------------------===//
1111

12-
struct FixedPatternConsumer<Consumed: Collection, Pattern: Collection>
12+
struct FixedPatternConsumer<Consumed: Collection, Pattern: Sequence>
1313
where Consumed.Element: Equatable, Pattern.Element == Consumed.Element
1414
{
1515
let pattern: Pattern
@@ -21,20 +21,17 @@ extension FixedPatternConsumer: CollectionConsumer {
2121
in range: Range<Consumed.Index>
2222
) -> Consumed.Index? {
2323
var index = range.lowerBound
24-
var patternIndex = pattern.startIndex
24+
var patternIterator = pattern.makeIterator()
2525

26-
while true {
27-
if patternIndex == pattern.endIndex {
28-
return index
29-
}
30-
31-
if index == range.upperBound || consumed[index] != pattern[patternIndex] {
26+
while let element = patternIterator.next() {
27+
if index == range.upperBound || consumed[index] != element {
3228
return nil
3329
}
3430

3531
consumed.formIndex(after: &index)
36-
pattern.formIndex(after: &patternIndex)
3732
}
33+
34+
return index
3835
}
3936
}
4037

0 commit comments

Comments
 (0)