 
             self.init(errors: errors)
         }
-
-        public static func ==(lhs: Summary, rhs: Summary) -> Bool {
-            return lhs.errors.map { $0.localizedDescription } == rhs.errors.map { $0.localizedDescription }
-        }
     }
 }
+
+// MARK: - Equatable conformance
+
+extension Result.Summary: Equatable {
+
+    public static func ==(lhs: Result.Summary, rhs: Result.Summary) -> Bool {
+        return lhs.errors.map { $0.localizedDescription } == rhs.errors.map { $0.localizedDescription }
+    }
+}
+
+// MARK: - Factory methods
+
+extension Result.Summary {
+    internal static var Successful = Result.Summary(errors: [])
+}

    /**
     The summary of a validation result.
     */
    public struct Summary: Equatable {

        /**
         `[Error]` if the validation result is `.invalid`, `nil` otherwise.

            return failingConstraints > 0
        }

        internal init(errors:[Error]) {
            self.errors = errors;
        }
