@@ -26,8 +26,7 @@ let inline traverseResultM'
2626 | Error e -> Error e
2727 | Ok initialSuccesses ->
2828
29- let mutable oks = ArrayCollector()
30- oks.AddMany initialSuccesses
29+ let oks = ResizeArray( initialSuccesses)
3130 let mutable err = Unchecked.defaultof< 'error>
3231 let mutable ok = true
3332 use e = xs.GetEnumerator()
@@ -40,7 +39,7 @@ let inline traverseResultM'
4039 err <- e
4140 ok <- false
4241
43- if ok then Ok( oks.Close ()) else Error err
42+ if ok then Ok( oks.ToArray ()) else Error err
4443
4544/// <summary>
4645/// Applies a function to each element of a sequence and returns a single result
@@ -77,31 +76,29 @@ let inline traverseResultA'
7776
7877 match state with
7978 | Error failuresToDate ->
80- let mutable errs = ArrayCollector()
81- errs.AddMany failuresToDate
79+ let errs = ResizeArray failuresToDate
8280
8381 for x in xs do
8482 match f x with
8583 | Error e -> errs.Add e
8684 | Ok _ -> () // as the initial state was failure, oks are irrelevant
8785
88- Error( errs.Close ())
86+ Error( errs.ToArray ())
8987 | Ok initialSuccesses ->
9088
91- let mutable oks = ArrayCollector()
92- oks.AddMany initialSuccesses
93- let mutable errs = ArrayCollector()
94- let mutable ok = true
89+ let oks = ResizeArray initialSuccesses
90+ let errs = ResizeArray()
9591
9692 for x in xs do
9793 match f x with
98- | Ok r when ok -> oks.Add r
94+ | Ok r when errs.Count = 0 -> oks.Add r
9995 | Ok _ -> () // no point saving results we won't use given the end result will be Error
100- | Error e ->
101- errs.Add e
102- ok <- false
96+ | Error e -> errs.Add e
10397
104- if ok then Ok( oks.Close()) else Error( errs.Close())
98+ if errs.Count = 0 then
99+ Ok( oks.ToArray())
100+ else
101+ Error( errs.ToArray())
105102
106103/// <summary>
107104/// Applies a function to each element of a sequence and returns a single result
@@ -139,8 +136,7 @@ let inline traverseAsyncResultM'
139136 match ! state with
140137 | Error e -> return Error e
141138 | Ok initialSuccesses ->
142- let mutable oks = ArrayCollector()
143- oks.AddMany initialSuccesses
139+ let oks = ResizeArray initialSuccesses
144140 let mutable err = Unchecked.defaultof< 'error>
145141 let mutable ok = true
146142 use e = xs.GetEnumerator()
@@ -153,7 +149,7 @@ let inline traverseAsyncResultM'
153149 err <- e
154150 ok <- false
155151
156- return if ok then Ok( oks.Close ()) else Error err
152+ return if ok then Ok( oks.ToArray ()) else Error err
157153 }
158154
159155/// <summary>
@@ -194,8 +190,7 @@ let inline traverseTaskResultM'
194190 match ! state with
195191 | Error e -> return Error e
196192 | Ok initialSuccesses ->
197- let mutable oks = ArrayCollector()
198- oks.AddMany initialSuccesses
193+ let oks = ResizeArray initialSuccesses
199194 let mutable err = Unchecked.defaultof< 'error>
200195 let mutable ok = true
201196 use e = xs.GetEnumerator()
@@ -208,7 +203,7 @@ let inline traverseTaskResultM'
208203 err <- e
209204 ok <- false
210205
211- return if ok then Ok( oks.Close ()) else Error err
206+ return if ok then Ok( oks.ToArray ()) else Error err
212207 }
213208
214209/// <summary>
0 commit comments