Thread overview | ||||||
---|---|---|---|---|---|---|
|
October 07, 2017 @nogc formattedWrite | ||||
---|---|---|---|---|
| ||||
Is it currently possible to somehow do @nogc formatted output to string? I'm currently using my `pure @nogc nothrow` array-container `CopyableArray` as @safe pure /*TODO nothrow @nogc*/ unittest { import std.format : formattedWrite; const x = "42"; alias A = CopyableArray!(char); A a; a.formattedWrite!("x : %s")(x); assert(a == "x : 42"); } but I can't tag the unittest as `nothrow @nogc` because of the call to `formattedWrite`. Is this because `formattedWrite` internally uses the GC for buffer allocations or because it may throw? It would be nice to be able to formatted output in -betterC... |
October 07, 2017 Re: @nogc formattedWrite | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nordlöw | On Saturday, 7 October 2017 at 18:14:00 UTC, Nordlöw wrote: > > It would be nice to be able to formatted output in -betterC... Agreed. If you know the size of the buffer, you can use sformat, which might be @nogc, but I don't know if it's compatible with betterC. Also, you might check out Ocean, which might have nogc formatting. https://github.com/sociomantic-tsunami/ocean |
October 09, 2017 Re: @nogc formattedWrite | ||||
---|---|---|---|---|
| ||||
Posted in reply to jmh530 | On Saturday, 7 October 2017 at 18:27:36 UTC, jmh530 wrote:
> On Saturday, 7 October 2017 at 18:14:00 UTC, Nordlöw wrote:
>>
>> It would be nice to be able to formatted output in -betterC...
>
> Agreed. If you know the size of the buffer, you can use sformat, which might be @nogc, but I don't know if it's compatible with betterC. Also, you might check out Ocean, which might have nogc formatting.
> https://github.com/sociomantic-tsunami/ocean
As far as I know sformat is still not @nogc because it may throw an exception if buffer is not large enough, and throwing exceptions requires allocation.
|
October 09, 2017 Re: @nogc formattedWrite | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nordlöw | On Saturday, 7 October 2017 at 18:14:00 UTC, Nordlöw wrote:
> Is it currently possible to somehow do @nogc formatted output to string?
>
> I'm currently using my `pure @nogc nothrow` array-container `CopyableArray` as
>
> @safe pure /*TODO nothrow @nogc*/ unittest
> {
> import std.format : formattedWrite;
> const x = "42";
> alias A = CopyableArray!(char);
> A a;
> a.formattedWrite!("x : %s")(x);
> assert(a == "x : 42");
> }
>
> but I can't tag the unittest as `nothrow @nogc` because of the call to `formattedWrite`. Is this because `formattedWrite` internally uses the GC for buffer allocations or because it may throw?
>
> It would be nice to be able to formatted output in -betterC...
Phobos code is not @nogc (can be fixed), but it will not nothrow.
PRs with @nogc formatting functionality are welcome in Mir Algorithm.
Cheers,
Ilya
|
Copyright © 1999-2021 by the D Language Foundation