fix iteration in ring

This commit is contained in:
xtaci
2025-06-08 12:15:44 +08:00
parent 0a904d16b7
commit fee9135fb4
+4 -4
View File
@@ -102,12 +102,12 @@ func (r *RingBuffer[T]) ForEach(fn func(*T) bool) {
// Wrapped data: [head ... end) + [0 ... tail)
for i := r.head; i < len(r.elements); i++ {
if !fn(&r.elements[i]) {
break // Stop iteration if function returns false
return
}
}
for i := 0; i < r.tail; i++ {
if !fn(&r.elements[i]) {
break // Stop iteration if function returns false
return
}
}
}
@@ -131,12 +131,12 @@ func (r *RingBuffer[T]) ForEachReverse(fn func(*T) bool) {
} else {
for i := r.tail - 1; i >= 0; i-- {
if !fn(&r.elements[i]) {
break // Stop iteration if function returns false
return
}
}
for i := len(r.elements) - 1; i >= r.head; i-- {
if !fn(&r.elements[i]) {
break // Stop iteration if function returns false
return
}
}
}