sequence method

Option<Map<K, V>> sequence()

Turns a Map<K, Option<V>> into an Option<Map<K, V>>. If all values are Some, it returns a Some<Map<K, V>>. If any value is a None, it returns None.

Implementation

Option<Map<K, V>> sequence() {
  final buffer = <K, V>{};
  for (final entry in entries) {
    switch (entry.value) {
      case Some(value: final v):
        buffer[entry.key] = v;
      case None():
        return const None();
    }
  }
  return Some(buffer);
}