Comment by inferiorhuman
1 day ago
If your API takes &str, and tries to do byte-based indexing, it should
almost certainly be taking &[u8] instead.
Str is indexed by bytes. That's the issue.
1 day ago
If your API takes &str, and tries to do byte-based indexing, it should
almost certainly be taking &[u8] instead.
Str is indexed by bytes. That's the issue.
As a matter of fact, you cannot do
You will get a compiler error telling you that you cannot index into &str.
Right, you have to give it a usize range. And that will index by bytes. This:
compiles and prints out "1".
This:
compiles and panics with the following error:
To get the nth char (scalar codepoint):
To get a substring:
To actually get the bytes you'd have to call #as_bytes which works with scalar and range indices, e.g.:
IMO it's less intuitive than it should be but still less bad than e.g. Go's two types of nil because it will fail in a visible manner.