Skip to content

to!string and format don’t handle infinite ranges #10559

@dlangBugzillaToGithub

Description

@dlangBugzillaToGithub

ogion.art reported this on 2024-08-21T13:09:02Z

Transfered from https://issues.dlang.org/show_bug.cgi?id=24713

Description

It is desirable to be able to stringize all existing D types (with `noreturn` being exception). Currently, this doesn’t even compile:
import std.range, std.conv;
void main() {
    auto s = 42.repeat.to!string;
}
> Error: none of the overloads of template `std.conv.toImpl` 
> are callable using argument types `!(string)(Repeat!int)`

And this compiles but gets stuck in an infinite loop:
import std.range, std.format;
void main() {
    auto s = format("%s", 42.repeat);
}

An infinite range could be denoted by printing its first three elements followed by an ellipsis (in this case: "[42, 42, 42, ...]").

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions