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