Jelajahi Sumber

AK: Add release_value() and release_error() to AK::Result

These are nice when you want to move something out of the result,
and match the API we already have for Optional.
Andreas Kling 4 tahun lalu
induk
melakukan
4a83a37f79
1 mengubah file dengan 15 tambahan dan 6 penghapusan
  1. 15 6
      AK/Result.h

+ 15 - 6
AK/Result.h

@@ -54,12 +54,6 @@ public:
     {
     }
 
-    Result(const ValueType& res, const ErrorType& error)
-        : m_result(res)
-        , m_error(error)
-    {
-    }
-
     Result(Result&& other) = default;
     Result(const Result& other) = default;
     ~Result() = default;
@@ -79,6 +73,16 @@ public:
         return m_error.has_value();
     }
 
+    ValueType release_value()
+    {
+        return m_result.release_value();
+    }
+
+    ErrorType release_error()
+    {
+        return m_error.release_value();
+    }
+
 private:
     Optional<ValueType> m_result;
     Optional<ErrorType> m_error;
@@ -113,6 +117,11 @@ public:
         return m_error.has_value();
     }
 
+    void release_error()
+    {
+        return m_error.release_value();
+    }
+
 private:
     Optional<ErrorType> m_error;
 };