Thread overview
Implicit conversion of string to array of immutable ubytes
Mar 23, 2024
Per Nordlöw
Mar 23, 2024
Jonathan M Davis
6 days ago
Andy Valencia
March 23, 2024

Why doesn't string implicitly convert to immutable(ubyte)[] in @safe mode?

March 23, 2024
On Saturday, March 23, 2024 12:11:15 AM MDT Per Nordlöw via Digitalmars-d- learn wrote:
> Why doesn't string implicitly convert to immutable(ubyte)[] in
> @safe mode?

Why would it? They're different types. Their elements happen to have the same size, but that doesn't mean that they're used for the same thing at all. And having them be implicitly convertible could cause serious problems with overloading.

If you want to do that conversion without a cast, then you can just use std.string.representation (which will do the cast internally).

- Jonathan M Davis




6 days ago
On Saturday, 23 March 2024 at 06:55:41 UTC, Jonathan M Davis wrote:
> If you want to do that conversion without a cast, then you can just use std.string.representation (which will do the cast internally).

I somehow missed this in Programming in D, and even here on the forum.  So just noting that if your code is straddling the worlds of ubyte[] and string, "representation" from std.string will give you the immutable ubyte[] (or ushort[]/uint[] as appropriate) for a string which you want to feed into a ubyte[] based API.

Andy