Я получаю ошибку Key path value type 'Data.Element.ID' cannot be converted to contextual type 'ID'
при попытке создать инициализатор в расширении ниже, когда передаваемые данные содержат элементы, которые уже наследуются от Identifiable.
struct List<Data, ID> where Data: RandomAccessCollection, ID: Hashable {
private let data: [Data.Element]
private let id: KeyPath<Data.Element, ID>
init(data: Data, id: KeyPath<Data.Element, ID>) {
self.data = data.map { $0 }
self.id = id
}
}
extension List where Data.Element: Identifiable {
init(data: Data) {
self.data = data.map { $0 }
self.id = \Data.Element.id // Compilation Error: Key path value type 'Data.Element.ID' cannot be converted to contextual type 'ID'
}
}