Build Status Platforms Documentation

Packet

一组用于处理 DataAsyncSequence 的实用工具。

这里的大部分内容都是 Foundation 特定的。但是,其目的是补充 async-algorithms,而不是重叠。

集成

dependencies: [
    .package(url: "https://github.com/mattmassicotte/Packet", branch: "main")
]

用法

FileHandle 支持

let fileHandle = FileHandle(...)

for await data in fileHandle.chunks {
    // use Data value here
}

URLSession 支持。这提供了一个 相当大的性能优势

let stream = URLSession.shared.chunks(for: url)
for try await data in stream {
    // use Data value here
}

有时,为了使某些内容与现有的 API 兼容,您需要取消序列的分块。 AsyncByteSequenceData 序列转换为 UInt8 序列。 这本质上效率较低,但比更改消费者要省事得多。

let bytes = AsyncByteSequence(dataSequence)

for try await byte in bytes {
    // one byte at a time
}

贡献与协作

我很乐意听到您的声音! 通过 mastodon、issue 或 pull request 与我联系。

我更喜欢协作,如果您有类似的项目,我很乐意找到合作方式。

为了提高可访问性,我更喜欢使用制表符进行缩进。 但是,我宁愿您使用您想要的系统并提交 PR,也不愿因为空白而犹豫。

参与此项目即表示您同意遵守 贡献者行为准则