What is the 'Result' type even for?

Steven Schveighoffer schveiguy at gmail.com
Fri Jan 20 03:38:28 UTC 2023


On 1/19/23 10:34 PM, Ruby The Roobster wrote:
> On Friday, 20 January 2023 at 03:30:56 UTC, Steven Schveighoffer wrote:
>> On 1/19/23 10:11 PM, Ruby The Roobster wrote:
>> ...
>>
>> The point is to be a range over the original input, evaluated lazily. 
>> Using this building block, you can create an array, or use some other 
>> algorithm, or whatever you want. All without allocating more space to 
>> hold an array.
>>
> 
> I get the point that it is supposed to be lazy.  But why are these basic 
> cases not implemented?  I shouldn't have to go write a wrapper for 
> something as simple as casting this type to the original type.  This is 
> one of the things that one expects the standard library to do for you.

A range simply does not provide the API you are seeking. It provides 3 
methods:

front
popFront
empty

That's it. It does not provide appending. If you want appending or 
random access, use an array:

```d
auto c = "a|b|c|d|e".split('|');
static assert(is(typeof(c) == string[]));
// or:
auto c2 = "a|b|c|d|e".splitter('|').array; // convert range to an array
```

-Steve


More information about the Digitalmars-d-learn mailing list