Restore hashable

This commit is contained in:
Max Goedjen 2020-03-07 15:09:18 -08:00
parent dc5cce0b39
commit 8863a42308
No known key found for this signature in database
GPG Key ID: E58C21DD77B9B8E8

View File

@ -1,4 +1,4 @@
public protocol Secret: Identifiable { public protocol Secret: Identifiable, Hashable {
var name: String { get } var name: String { get }
var publicKey: Data { get } var publicKey: Data { get }
@ -9,11 +9,13 @@ public protocol Secret: Identifiable {
public struct AnySecret: Secret { public struct AnySecret: Secret {
fileprivate let hashable: AnyHashable
fileprivate let _id: () -> AnyHashable fileprivate let _id: () -> AnyHashable
fileprivate let _name: () -> String fileprivate let _name: () -> String
fileprivate let _publicKey: () -> Data fileprivate let _publicKey: () -> Data
public init<T>(_ secret: T) where T: Secret { public init<T>(_ secret: T) where T: Secret {
self.hashable = secret
_id = { secret.id as AnyHashable } _id = { secret.id as AnyHashable }
_name = { secret.name } _name = { secret.name }
_publicKey = { secret.publicKey } _publicKey = { secret.publicKey }
@ -31,5 +33,13 @@ public struct AnySecret: Secret {
return _publicKey() return _publicKey()
} }
public static func == (lhs: AnySecret, rhs: AnySecret) -> Bool {
lhs.hashable == rhs.hashable
}
public func hash(into hasher: inout Hasher) {
hashable.hash(into: &hasher)
}
} }