From 8863a42308325c41aa3ac0e3bdb50cb96bfa1a00 Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Sat, 7 Mar 2020 15:09:18 -0800 Subject: [PATCH] Restore hashable --- SecretKit/Secret.swift | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/SecretKit/Secret.swift b/SecretKit/Secret.swift index 1d4fe0a..49a6536 100644 --- a/SecretKit/Secret.swift +++ b/SecretKit/Secret.swift @@ -1,4 +1,4 @@ -public protocol Secret: Identifiable { +public protocol Secret: Identifiable, Hashable { var name: String { get } var publicKey: Data { get } @@ -9,11 +9,13 @@ public protocol Secret: Identifiable { public struct AnySecret: Secret { + fileprivate let hashable: AnyHashable fileprivate let _id: () -> AnyHashable fileprivate let _name: () -> String fileprivate let _publicKey: () -> Data public init(_ secret: T) where T: Secret { + self.hashable = secret _id = { secret.id as AnyHashable } _name = { secret.name } _publicKey = { secret.publicKey } @@ -31,5 +33,13 @@ public struct AnySecret: Secret { 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) + } + }