Signal-iOS/SignalServiceKit/Util/Sequence+OWS.swift
2025-12-30 11:34:05 -08:00

22 lines
659 B
Swift

//
// Copyright 2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
public extension Sequence {
/// Builds a dicitonary mapping the elements of a sequence to the value returned from `valueBuilder`
/// The elements of a dictionary must be unique.
func dictionaryMappingToValues<Value>(_ valueBuilder: (Element) throws -> Value) rethrows -> [Element: Value] {
let kvPairs = try map { key in
return (key, try valueBuilder(key))
}
return Dictionary(kvPairs) { val1, _ -> Value in
owsFailDebug("Key uniqueness conflict")
return val1
}
}
}