On 5/13/21 10:07 AM, Jeff wrote:

> I have a class where I'd like to supply it with an InputRange!string.
> Yet, for the life of me I can't seem to pass to it a File.byLine

As Adam said, your range elements need to be converted to string e.g. with 'text' (the same as to!string). However, you must also create a dynamic InputRange!string object for dynamic polymorphism that InputRange provides. And that's achieved by function inputRangeObject():

import std.range;
import std.stdio;
import std.algorithm;
import std.conv;

class Foo {
  private InputRange!string source;

  this(InputRange!string s) {
    source = s;
  }

  // do stuff with it
}

void main() {
  new Foo(inputRangeObject(File("stuff.txt").byLine.map!text));
}

Ali

Reply via email to