On Monday, 11 October 2021 at 00:19:44 UTC, apz28 wrote:
/* Getting this error
onlineapp.d(34): Error: none of the overloads of `toString` are callable using argument types `(Buffer)`, candidates are:
onlineapp.d(19):        `onlineapp.Foo.toString()`
onlineapp.d(26): `onlineapp.Foo.toString(const(char)[] fmt)` onlineapp.d(22): `toString(Writer, Char)(return ref Writer sink)`
*/

The signature of your `toString` method should match one of the examples in [the documentation][1]:

```d
void toString(Writer, Char)(ref Writer w, const ref FormatSpec!Char fmt)
void toString(Writer)(ref Writer w)
string toString();
```

Here is an example that works:

```d
import std.range: put;
import std.array: appender;
import std.format: formattedWrite;

struct Foo
{
    void toString(Writer)(ref Writer writer)
    {
        put(writer, "Foo");
    }
}

void main()
{
    auto buffer = appender!string;
    Foo foo;
    formattedWrite(buffer, "%s", foo);
    assert(buffer[] == "Foo");
}
```

Link: https://run.dlang.io/is/dZLRuo


[1]: https://phobos.dpldocs.info/std.format.write.html

Reply via email to