asSynchronouslyIterateCollectable
fun <T> Collectable<T>.asSynchronouslyIterateCollectable(produceScope: CoroutineScope): SynchronouslyIterateCollectable<T>(source)
将一个 Collectable 转化为可以提供同步迭代能力的迭代器 SynchronouslyIterateCollectable。
如果本身就属于 SynchronouslyIterateCollectable 类型则会得到自身,否则会尝试通过阻塞函数转化。 这种情况下得到的 SynchronouslyIterateCollectable 是借助 Flow 实现的 FlowSynchronouslyIterateCollectable 类型。 这其中可能会有一定的性能损耗,因为这其中隐含了将挂起函数转化为阻塞函数的行为。
produceScope 用于当 Collectable 需要通过 Flow 以 FlowSynchronouslyIterateCollectable 类型实现时, 使用在 FlowSynchronouslyIterateCollectable.iterator 中,将 Flow 转化为 Iterator。
如果最终的类型不是 FlowSynchronouslyIterateCollectable,那么 produceScope 将不会被使用。
如果不希望进行过多的校验和优化,直接转化为 FlowSynchronouslyIterateCollectable,可以考虑通过 Collectable.asFlow 得到 Flow 后使用 asFlowSynchronouslyIterateCollectable。