MCPcopy Create free account
hub / github.com/apache/arrow / CollectAsyncGenerator

Function CollectAsyncGenerator

cpp/src/arrow/util/async_generator.h:127–142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125/// \brief Collect the results of an async generator into a vector
126template <typename T>
127Future<std::vector<T>> CollectAsyncGenerator(AsyncGenerator<T> generator) {
128 auto vec = std::make_shared<std::vector<T>>();
129 auto loop_body = [generator = std::move(generator),
130 vec = std::move(vec)]() -> Future<ControlFlow<std::vector<T>>> {
131 auto next = generator();
132 return next.Then([vec](const T& result) -> Result<ControlFlow<std::vector<T>>> {
133 if (IsIterationEnd(result)) {
134 return Break(*vec);
135 } else {
136 vec->push_back(result);
137 return Continue();
138 }
139 });
140 };
141 return Loop(std::move(loop_body));
142}
143
144/// \see MakeMappedGenerator
145template <typename T, typename V>

Calls 6

IsIterationEndFunction · 0.85
BreakFunction · 0.85
ContinueClass · 0.85
LoopFunction · 0.85
ThenMethod · 0.80
push_backMethod · 0.80