Adding a read primitive to ranges
Freddy via Digitalmars-d
digitalmars-d at puremagic.com
Mon May 4 17:50:43 PDT 2015
On Monday, 4 May 2015 at 23:20:57 UTC, Alex Parrill wrote:
> On Monday, 4 May 2015 at 19:23:08 UTC, Freddy wrote:
>> On Monday, 4 May 2015 at 15:16:25 UTC, Alex Parrill wrote:
>>
>> The ploblem is that all the functions in
>> std.range,std.algorithm and many other wrappers would ignore
>> byChucks and produce much slower code.
>
> How so? `file.byChunks(4096).joiner` is a range that acts as if
> you read each byte out of the file one at a time, but actually
> reads them in 4096-byte buffers. It's still compatible with all
> of the range and algorithm functions.
Reading an arbitrary number of data after being wrapped.
For example
----
void func(R)(R range){//expects range of strings
string[] elms=range.read(5);
string[] elms2=range.read(9);
/++..++/
}
void caller(){
auto file=...;//unbuffered file
file.map!(a=>a.to!string).func();
}
----
Using byChucks would cause much more reallocation.
More information about the Digitalmars-d
mailing list