On Sunday, 14 December 2025 at 12:43:57 UTC, Paul Backus wrote:
On Sunday, 14 December 2025 at 12:32:23 UTC, yabobay wrote:
[...]
This is caused by [autodecoding][1], a feature of the standard
library where strings are automatically converted into Unicode
code points when used as ranges.
Because UTF-8 is a variable-length encoding, this means that
when a UTF-8 `string` is used as a range, it does not have a
`.length` property (read the linked article for a more thorough
explanation).
You can work around this using `std.utf.byCodeUnit` to treat
the string as a range of bytes instead of a range of code
points:
```d
import std.utf : byCodeUnit;
s.byCodeUnit.retro.each!(...); // No error
```
[1]: https://jackstouffer.com/blog/d_auto_decoding_and_you.html
Thanks! I also found that making the `SList` be of `dchar`'s
instead of `char`'s also works and is closer to what i wanted to
do in the first place.