Переглянути джерело

AK: Add StringBuilder::try_join()

This is a failable version of StringBuilder::join().
MacDue 2 роки тому
батько
коміт
2366265c53
1 змінених файлів з 11 додано та 5 видалено
  1. 11 5
      AK/StringBuilder.h

+ 11 - 5
AK/StringBuilder.h

@@ -78,15 +78,21 @@ public:
 
     template<class SeparatorType, class CollectionType>
     void join(SeparatorType const& separator, CollectionType const& collection, StringView fmtstr = "{}"sv)
+    {
+        MUST(try_join(separator, collection, fmtstr));
+    }
+
+    template<class SeparatorType, class CollectionType>
+    ErrorOr<void> try_join(SeparatorType const& separator, CollectionType const& collection, StringView fmtstr = "{}"sv)
     {
         bool first = true;
         for (auto& item : collection) {
-            if (first)
-                first = false;
-            else
-                append(separator);
-            appendff(fmtstr, item);
+            if (!first)
+                TRY(try_append(separator));
+            TRY(try_appendff(fmtstr, item));
+            first = false;
         }
+        return {};
     }
 
 private: