Skip to content

Commit 78a50d6

Browse files
chore: Remove AsyncCollections dependency
1 parent 74ffc45 commit 78a50d6

3 files changed

Lines changed: 7 additions & 17 deletions

File tree

Package.resolved

Lines changed: 1 addition & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ let package = Package(
1212
],
1313
dependencies: [
1414
.package(url: "https://github.com/apple/swift-algorithms.git", from: "1.0.0"),
15-
.package(url: "https://github.com/adam-fowler/async-collections", from: "0.0.1"),
1615
.package(url: "https://github.com/apple/swift-nio.git", from: "2.84.0"),
1716
],
1817
targets: [
@@ -27,7 +26,6 @@ let package = Package(
2726
name: "AsyncDataLoader",
2827
dependencies: [
2928
.product(name: "Algorithms", package: "swift-algorithms"),
30-
.product(name: "AsyncCollections", package: "async-collections"),
3129
]
3230
),
3331
.testTarget(

Sources/AsyncDataLoader/DataLoader.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,19 +113,20 @@ public actor DataLoader<Key: Hashable & Sendable, Value: Sendable> {
113113
guard !keys.isEmpty else {
114114
return []
115115
}
116-
117-
var results = [Value]()
118-
results.reserveCapacity(keys.count)
116+
117+
// This buffer pointer allows us to initialize a pre-sized non-nullable list
118+
// that we can populate by index as `load` results stream in asyncronously
119+
let buffer = UnsafeMutableBufferPointer<Value>.allocate(capacity: keys.count)
119120
try await withThrowingTaskGroup { group in
120121
for (index, element) in keys.enumerated() {
121122
group.addTask {
122123
let result = try await self.load(key: element)
123-
results[index] = result
124+
buffer[index] = result
124125
}
125126
}
126127
try await group.waitForAll()
127128
}
128-
return results
129+
return Array(buffer)
129130
}
130131

131132
/// Clears the value at `key` from the cache, if it exists. Returns itself for

0 commit comments

Comments
 (0)