如何访问 Swift 中 UnsafePointer 引用的结构的成员字段的 UnsafePointer?

How do I access UnsafePointer of member field of a struct referenced by an UnsafePointer in Swift?

给定

public struct MIDIPacketList {
    public var numPackets: UInt32
    public var packet: (MIDIPacket)
}

假设我有一个 UnsafeMutablePointer,我想访问数据包的一个 UnsafeMutablePointer。仅仅获得原始数据包成员的副本很容易,但不正确:我需要指针本身。 在C中,我想实现的很简单

MIDIPacket *packet = &packetList->packet;

如何在 Swift 中执行相同的操作? 请注意,虽然我认为前进 4 个字节(UInt32 的大小)最有可能作为黑客工作,但由于结构对齐问题,这是一个不正确的答案。

这应该有效:

let packetList: UnsafeMutablePointer<MIDIPacketList> = ...

withUnsafeMutablePointer(to: &packetList.pointee.packet) {
    packet in // UnsafeMutablePointer<(MIDIPacket)>
    // ...
}

在闭包内部,packet 是指向 MIDIPacket 的指针。