I think it would be unfortunate if the only way to spell this operation would be with the ~=
operator. The (only?) other override of ~=
that I could find in the stdlib is for Range
, where it is effectively an alias for .contains(...)
. Would it make sense to add a Regex
analogue of elementsEqual
?
extension BidirectionalCollection where SubSequence == Substring {
public func elementsEqual(_ other: some RegexComponent) -> Bool
}
I'll admit that the naming is much less clear than for contains(_:)
and starts(with:)
, but it is at least consistent. ~=
could then be an alias for this.
Yours and @Karl 's arguments have convinced me that this is the right choice .
It would definitely be nice to make abstracting over composing regexes easier. With the current proposals, it's possible to compose regexes (which is already a huge improvement over what's available elsewhere). As I discovered above, putting this composition into a function is much harder! Your idea for regex literal interpolation looks like it might help with this?