Равенство между двумя String.Index
es определяется в старших 50 битах _rawBits
, или orderingValue
, следующим образом:
extension String.Index: Equatable {
@inlinable @inline(__always)
public static func == (lhs: String.Index, rhs: String.Index) -> Bool {
return lhs.orderingValue == rhs.orderingValue
}
}
И поскольку 0 &>> 14
и 256 &>> 14
оба равны 0
, позиции равны, и поэтому индексы считаются равными.
&>>
- инфиксный оператор для сдвига битов вправо, маскирующий величину сдвига до 64 бит.