The future of serialization & deserialization APIs

Indeed, although having an Encodable "snapshot" type is also an option in that case:

extension MyMoveOnlyType {
  struct Snapshot: Copyable, Codable {
    ...
  }

  borrowing func snapshot() -> Snapshot {
    ...
  }
}