diff --git a/Sources/XXMessengerClient/Utils/Stored.swift b/Sources/XXMessengerClient/Utils/Stored.swift index 3f5d5fdb186db87d79872f4ee44d3ad1cf799979..052d638705c6dce4a619fbe18d0d55cf2159733c 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>(