77struct ValueTraits<T, std::enable_if_t<meta::kIsRange<T> && !meta::kIsMap<T>>> {
78 using ValueType = meta::RangeValueType<T>;
80 static T Parse(NYdb::TValueParser& parser,
const ParseContext& context) {
82#if __cpp_lib_ranges_to_container >= 202202L
84 std::ranges::subrange{
85 impl::ParseItemsIterator<ValueType>{parser, context},
86 impl::ParseItemsIterator<ValueType>{},
90 T result(impl::ParseItemsIterator<ValueType>{parser, context}, impl::ParseItemsIterator<ValueType>{});
96 template <
typename Builder,
typename U =
const T&>
97 static void Write(NYdb::TValueBuilderBase<Builder>& builder, U&& value) {
98 bool list_opened =
false;
99 for (
auto&& item : value) {
104 builder.AddListItem();
109 }
else if constexpr (std::is_same_v<ValueType, InsertRow>) {
114 builder.EmptyList(
ValueTraits<ValueType>::MakeType());
118 static NYdb::TType MakeType() {
119 NYdb::TTypeBuilder builder;
121 return builder.Build();