mergeListsSetsOrQueues function
Merges two iterable structures. The result does not share any mutable substructure with either input — items are deep-copied where applicable.
Implementation
Iterable<dynamic> mergeListsSetsOrQueues(
Iterable<dynamic> a,
Iterable<dynamic> b, [
dynamic Function(dynamic)? elseFilter,
]) {
if (a is Set) {
final a1 = <dynamic>{
for (final e in a.nonNulls.cast<dynamic>()) _deepCopy(e),
};
final b1 = elseFilter != null
? b.nonNulls.cast<dynamic>().map(elseFilter)
: b.nonNulls.cast<dynamic>().map<dynamic>(_deepCopy);
return a1..addAll(b1);
} else if (a is Queue) {
final a1 = a.nonNulls;
final b1 = b.nonNulls;
final mergedList = _performElementWiseMerge(a1, b1, elseFilter);
return Queue<dynamic>.of(mergedList);
} else {
final a1 = a.nonNulls;
final b1 = b.nonNulls;
return _performElementWiseMerge(a1, b1, elseFilter);
}
}