From 747e6c6069c373b90d76df10ad642a97724510d2 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Mon, 5 Sep 2022 11:00:24 +0200 Subject: [PATCH] Add Stored.tryGet extension --- Sources/XXMessengerClient/Utils/Stored.swift | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Sources/XXMessengerClient/Utils/Stored.swift b/Sources/XXMessengerClient/Utils/Stored.swift index 3f5d5fdb..052d6387 100644 --- a/Sources/XXMessengerClient/Utils/Stored.swift +++ b/Sources/XXMessengerClient/Utils/Stored.swift @@ -31,6 +31,23 @@ private final class Memory<Value> { var value: Value } +extension Stored { + public struct MissingValueError: Error, Equatable { + public init(typeDescription: String) { + self.typeDescription = typeDescription + } + + public var typeDescription: String + } + + public func tryGet<T>() throws -> T where Value == Optional<T> { + guard let value = get() else { + throw MissingValueError(typeDescription: "\(Self.self)") + } + return value + } +} + extension Stored { public static func unimplemented(placeholder: Value) -> Stored<Value> { Stored<Value>( -- GitLab