SE0270_RangeSet is a standalone library that implements the Swift Evolution proposal SE-0270: Add Collection Operations on Noncontiguous Elements. You can use this package independently, or as part of the standard library preview package.
SE0270_RangeSet provides operations on noncontiguous subranges of collections,
such as subranges(where:)
and moveSubranges(_:to:)
,
as well as the supporting RangeSet
type.
import SE0270_RangeSet
var numbers = [10, 12, -5, 14, -3, -9, 15]
let negatives = numbers.subranges(where: { $0 < 0 })
// numbers[negatives].count == 3
numbers.moveSubranges(negatives, to: 0)
// numbers == [-5, -3, -9, 10, 12, 14, 15]
You can add this library as a dependency to any Swift package.
Add this line to the dependencies
parameter in your Package.swift
file:
.package(
url: "https://github.com/apple/swift-se0270-range-set",
from: "1.0.0"),
Next, add the module as a dependency for your targets that will use the library:
.product(name: "SE0270_RangeSet", package: "swift-se0270-range-set"),
You can now use import SE0270_RangeSet
to make the library available in any Swift file.
We are no longer taking contributions to this repo. Please see the guide for Contributing to Swift for other opportunities within the Swift project. Thanks to all past contributors!