Clarify [T]::select_nth_unstable*
return values
In cases where the nth element is not unique within the slice, it is not correct to say that the values in the returned triplet include ones for "all elements" less/greater than that at the given index: indeed one (or more) such values would then laso contain values equal to that at the given index. The text proposed here clarifies exactly what is returned, but in so doing it is also documenting an implementation detail that previously wasn't detailed: namely that the return slices are slices into the reordered slice. I don't think this can be contentious, because the lifetimes of those returned slices are bound to that of the original (now reordered) slice—so there really isn't any other reasonable implementation that could have this behaviour; but nevertheless it's probably best if @rust-lang/libs-api give it a nod? Fixes #97982 r? m-ou-se @rustbot label +A-docs C-bug +T-libs-api
This commit is contained in:
parent
1f34da9ec8
commit
97bd49bf2d
@ -2628,9 +2628,10 @@ pub fn sort_unstable_by_key<K, F>(&mut self, mut f: F)
|
||||
/// less than or equal to any value at a position `j > index`. Additionally, this reordering is
|
||||
/// unstable (i.e. any number of equal elements may end up at position `index`), in-place
|
||||
/// (i.e. does not allocate), and *O*(*n*) worst-case. This function is also/ known as "kth
|
||||
/// element" in other libraries. It returns a triplet of the following values: all elements less
|
||||
/// than the one at the given index, the value at the given index, and all elements greater than
|
||||
/// the one at the given index.
|
||||
/// element" in other libraries. It returns a triplet of the following from the reordered slice:
|
||||
/// the subslice prior to `index`, the element at `index`, and the subslice after `index`;
|
||||
/// accordingly, the values in those two subslices will respectively all be less-than-or-equal-to
|
||||
/// and greater-than-or-equal-to the value of the element at `index`.
|
||||
///
|
||||
/// # Current implementation
|
||||
///
|
||||
@ -2675,10 +2676,11 @@ pub fn select_nth_unstable(&mut self, index: usize) -> (&mut [T], &mut T, &mut [
|
||||
/// less than or equal to any value at a position `j > index` using the comparator function.
|
||||
/// Additionally, this reordering is unstable (i.e. any number of equal elements may end up at
|
||||
/// position `index`), in-place (i.e. does not allocate), and *O*(*n*) worst-case. This function
|
||||
/// is also known as "kth element" in other libraries. It returns a triplet of the following
|
||||
/// values: all elements less than the one at the given index, the value at the given index,
|
||||
/// and all elements greater than the one at the given index, using the provided comparator
|
||||
/// function.
|
||||
/// is also known as "kth element" in other libraries. It returns a triplet of the following from
|
||||
/// the slice reordered according to the provided comparator function: the subslice prior to
|
||||
/// `index`, the element at `index`, and the subslice after `index`; accordingly, the values in
|
||||
/// those two subslices will respectively all be less-than-or-equal-to and greater-than-or-equal-to
|
||||
/// the value of the element at `index`.
|
||||
///
|
||||
/// # Current implementation
|
||||
///
|
||||
@ -2727,10 +2729,11 @@ pub fn select_nth_unstable_by<F>(
|
||||
/// less than or equal to any value at a position `j > index` using the key extraction function.
|
||||
/// Additionally, this reordering is unstable (i.e. any number of equal elements may end up at
|
||||
/// position `index`), in-place (i.e. does not allocate), and *O*(*n*) worst-case. This function
|
||||
/// is also known as "kth element" in other libraries. It returns a triplet of the following
|
||||
/// values: all elements less than the one at the given index, the value at the given index, and
|
||||
/// all elements greater than the one at the given index, using the provided key extraction
|
||||
/// function.
|
||||
/// is also known as "kth element" in other libraries. It returns a triplet of the following from
|
||||
/// the slice reordered according to the provided key extraction function: the subslice prior to
|
||||
/// `index`, the element at `index`, and the subslice after `index`; accordingly, the values in
|
||||
/// those two subslices will respectively all be less-than-or-equal-to and greater-than-or-equal-to
|
||||
/// the value of the element at `index`.
|
||||
///
|
||||
/// # Current implementation
|
||||
///
|
||||
|
Loading…
Reference in New Issue
Block a user