Isolate ensures that the given segment's range is a subset of r by splitting at r.Start and r.End if necessary, and returns an updated iterator to the bounded segment. All existing iterators (including seg, but not including the returned iterators) are invalidated. Isolate is usually used when muta
(seg Iterator, r Range)
| 922 | // |
| 923 | // Preconditions: seg.Range().Overlaps(r). |
| 924 | func (s *Set) Isolate(seg Iterator, r Range) Iterator { |
| 925 | if seg.Range().CanSplitAt(r.Start) { |
| 926 | _, seg = s.SplitUnchecked(seg, r.Start) |
| 927 | } |
| 928 | if seg.Range().CanSplitAt(r.End) { |
| 929 | seg, _ = s.SplitUnchecked(seg, r.End) |
| 930 | } |
| 931 | return seg |
| 932 | } |
| 933 | |
| 934 | // LowerBoundSegmentSplitBefore combines LowerBoundSegment and SplitBefore. |
| 935 | // |