std.serialization: pre-voting review / discussion
ilya-stromberg
ilya-stromberg-2009 at yandex.ru
Tue Aug 20 23:32:02 PDT 2013
On Tuesday, 20 August 2013 at 10:51:25 UTC, Johannes Pfau wrote:
> Am Tue, 20 Aug 2013 10:40:57 +0200
> schrieb "ilya-stromberg" <ilya-stromberg-2009 at yandex.ru>:
>> We can use InputRange like this:
>>
>> import std.file;
>> auto archive = new Archive()
>> Serializer(archive).serialize(object);
>> //Archive implements InputRange for ubyte[]
>> write("file", archive);
>
> Yes, InputRange is more flexible, but it's also more difficult
> to
> implement and less efficient:
> What happens between the 'serialize' and the 'write' call?
> Archive
> has to cache the data, either the original object or the final
> produced data in an ubyte[] buffer.
No, Archive have to do NOTHING. 'serialize' call must only store
pointer to the object - without this requirement we can't have
lazy range. Serialization starts afrer 'write' call, and
ArchiveInputRange have to store current serialization state (like
Serializer in current implementation).
More information about the Digitalmars-d
mailing list