Creating InputRanges from strings, files etc.

Vinay Sajip vinay_sajip at yahoo.co.uk
Thu Nov 8 16:50:59 UTC 2018


On Thursday, 8 November 2018 at 16:41:50 UTC, Steven 
Schveighoffer wrote:
> I did this in a run.dlang.org playground:
>
> pragma(msg, ElementType!(typeof(b)));
> pragma(msg, ElementType!(typeof(d)));
>
> I get:
> immutable(ubyte)
> ubyte
>
> Which means they aren't the same type, and they don't define 
> the same interface (InputRange!(ubyte) is not the same as 
> InputRange!(immutable(ubyte)) ).
>
> Other than simply using compile-time functions, and dropping 
> the object interface as Alex suggests, the easiest thing I can 
> recommend is wrapping representation into a casting input range 
> such as map:
>
> auto b = inputRangeObject(a.representation.map!(b => ubyte(b)));
>
> You can see all this here:
>
> https://run.dlang.io/is/1E6Uqj
>
> -Steve

Thanks, guys, those are helpful pointers.


More information about the Digitalmars-d-learn mailing list