#pragma once #include #include #include #include namespace DataStreamAdapters { template struct Vector { template static void ReadFromDataStream(InputDataStream& stream, std::vector& vec) { static_assert(std::is_default_constructible_v); static_assert(std::is_move_constructible_v); uint64_t size; stream.Read(size); vec.clear(); vec.reserve(size); for (uint64_t i = 0; i < size; ++i) { TElement element; ReadHelper(stream, element); vec.push_back(std::move(element)); } } template static void WriteToDataStream(OutputDataStream& stream, const std::vector& vec) { stream.Write((uint64_t)vec.size()); for (auto& element : vec) { WriteHelper(stream, element); } } }; } // namespace DataStreamAdapters