Auto merge of #51033 - coryshrmn:master, r=dtolnay
stabilize RangeBounds collections_range #30877 The FCP for #30877 closed last month, with the decision to: 1. move from `collections::range::RangeArgument` to `ops::RangeBounds`, and 2. rename `start()` and `end()` to `start_bounds()` and `end_bounds()`. Simon Sapin already moved it to `ops::RangeBounds` in #49163. I renamed the functions, and removed the old `collections::range::RangeArgument` alias. This is my first Rust PR, please let me know if I can improve anything. This passes all tests for me, except the `clippy` tool (which uses `RangeArgument::start()`). I considered deprecating `start()` and `end()` instead of removing them, but the contribution guidelines indicate we can break `clippy` temporarily. I thought it was best to remove the functions, since we're worried about name collisions with `Range::start` and `end`. Closes #30877.
This commit is contained in:
commit
07c415c215
8 changed files with 68 additions and 108 deletions
|
@ -1834,7 +1834,7 @@ fn range_search<BorrowType, K, V, Q: ?Sized, R: RangeBounds<Q>>(
|
|||
Handle<NodeRef<BorrowType, K, V, marker::Leaf>, marker::Edge>)
|
||||
where Q: Ord, K: Borrow<Q>
|
||||
{
|
||||
match (range.start(), range.end()) {
|
||||
match (range.start_bound(), range.end_bound()) {
|
||||
(Excluded(s), Excluded(e)) if s==e =>
|
||||
panic!("range start and end are equal and excluded in BTreeMap"),
|
||||
(Included(s), Included(e)) |
|
||||
|
@ -1852,7 +1852,7 @@ fn range_search<BorrowType, K, V, Q: ?Sized, R: RangeBounds<Q>>(
|
|||
let mut diverged = false;
|
||||
|
||||
loop {
|
||||
let min_edge = match (min_found, range.start()) {
|
||||
let min_edge = match (min_found, range.start_bound()) {
|
||||
(false, Included(key)) => match search::search_linear(&min_node, key) {
|
||||
(i, true) => { min_found = true; i },
|
||||
(i, false) => i,
|
||||
|
@ -1866,7 +1866,7 @@ fn range_search<BorrowType, K, V, Q: ?Sized, R: RangeBounds<Q>>(
|
|||
(true, Excluded(_)) => 0,
|
||||
};
|
||||
|
||||
let max_edge = match (max_found, range.end()) {
|
||||
let max_edge = match (max_found, range.end_bound()) {
|
||||
(false, Included(key)) => match search::search_linear(&max_node, key) {
|
||||
(i, true) => { max_found = true; i+1 },
|
||||
(i, false) => i,
|
||||
|
|
|
@ -1493,12 +1493,12 @@ impl String {
|
|||
// Because the range removal happens in Drop, if the Drain iterator is leaked,
|
||||
// the removal will not happen.
|
||||
let len = self.len();
|
||||
let start = match range.start() {
|
||||
let start = match range.start_bound() {
|
||||
Included(&n) => n,
|
||||
Excluded(&n) => n + 1,
|
||||
Unbounded => 0,
|
||||
};
|
||||
let end = match range.end() {
|
||||
let end = match range.end_bound() {
|
||||
Included(&n) => n + 1,
|
||||
Excluded(&n) => n,
|
||||
Unbounded => len,
|
||||
|
@ -1551,12 +1551,12 @@ impl String {
|
|||
// Replace_range does not have the memory safety issues of a vector Splice.
|
||||
// of the vector version. The data is just plain bytes.
|
||||
|
||||
match range.start() {
|
||||
match range.start_bound() {
|
||||
Included(&n) => assert!(self.is_char_boundary(n)),
|
||||
Excluded(&n) => assert!(self.is_char_boundary(n + 1)),
|
||||
Unbounded => {},
|
||||
};
|
||||
match range.end() {
|
||||
match range.end_bound() {
|
||||
Included(&n) => assert!(self.is_char_boundary(n + 1)),
|
||||
Excluded(&n) => assert!(self.is_char_boundary(n)),
|
||||
Unbounded => {},
|
||||
|
|
|
@ -1166,12 +1166,12 @@ impl<T> Vec<T> {
|
|||
// the hole, and the vector length is restored to the new length.
|
||||
//
|
||||
let len = self.len();
|
||||
let start = match range.start() {
|
||||
let start = match range.start_bound() {
|
||||
Included(&n) => n,
|
||||
Excluded(&n) => n + 1,
|
||||
Unbounded => 0,
|
||||
};
|
||||
let end = match range.end() {
|
||||
let end = match range.end_bound() {
|
||||
Included(&n) => n + 1,
|
||||
Excluded(&n) => n,
|
||||
Unbounded => len,
|
||||
|
|
|
@ -980,12 +980,12 @@ impl<T> VecDeque<T> {
|
|||
// and the head/tail values will be restored correctly.
|
||||
//
|
||||
let len = self.len();
|
||||
let start = match range.start() {
|
||||
let start = match range.start_bound() {
|
||||
Included(&n) => n,
|
||||
Excluded(&n) => n + 1,
|
||||
Unbounded => 0,
|
||||
};
|
||||
let end = match range.end() {
|
||||
let end = match range.end_bound() {
|
||||
Included(&n) => n + 1,
|
||||
Excluded(&n) => n,
|
||||
Unbounded => len,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue