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.

Reply via email to