public struct Square: Equatable { public struct Position: Equatable { public let file: UInt8 public let rank: UInt8 public var index: Int { let r = (8 - rank) % 8 return Int(8*r+file-1) } public static func == (lhs: Position, rhs: Position) -> Bool { return lhs.index == rhs.index } } public let position: Position public let index: UInt8 public var piece: Piece? = nil public let color: Color public static func == (lhs: Square, rhs: Square) -> Bool { return lhs.position == rhs.position } }