Browse Source

Use `for x in y` construct for `bytes` iteration

This cannot be applied to the `strings` version, as that would cause a
rune-by-rune iteration, not a byte-by-byte one.
Feoramund 1 year ago
parent
commit
0d29cc3375
1 changed files with 4 additions and 4 deletions
  1. 4 4
      core/bytes/bytes.odin

+ 4 - 4
core/bytes/bytes.odin

@@ -298,8 +298,8 @@ split_after_iterator :: proc(s: ^[]byte, sep: []byte) -> ([]byte, bool) {
 
 index_byte :: proc(s: []byte, c: byte) -> int {
 	_index_byte :: #force_inline proc "contextless" (s: []byte, c: byte) -> int {
-		for i := 0; i < len(s); i += 1 {
-			if s[i] == c {
+		for ch, i in s {
+			if ch == c {
 				return i
 			}
 		}
@@ -319,8 +319,8 @@ index_byte :: proc(s: []byte, c: byte) -> int {
 // Returns -1 if c is not present
 last_index_byte :: proc(s: []byte, c: byte) -> int {
 	_last_index_byte :: #force_inline proc "contextless" (s: []byte, c: byte) -> int {
-		for i := len(s)-1; i >= 0; i -= 1 {
-			if s[i] == c {
+		#reverse for ch, i in s {
+			if ch == c {
 				return i
 			}
 		}