Add [f32]::sort_floats
and [f64]::sort_floats
· rust-lang/rust@bded8fc (original) (raw)
`@@ -4100,6 +4100,66 @@ impl<T, const N: usize> [[T; N]] {
`
4100
4100
`}
`
4101
4101
`}
`
4102
4102
``
``
4103
`+
#[cfg(not(bootstrap))]
`
``
4104
`+
#[cfg(not(test))]
`
``
4105
`+
impl [f32] {
`
``
4106
`+
/// Sorts the slice of floats.
`
``
4107
`+
///
`
``
4108
`+
/// This sort is in-place (i.e. does not allocate), O(n * log(n)) worst-case, and uses
`
``
4109
`` +
/// the ordering defined by [f32::total_cmp
].
``
``
4110
`+
///
`
``
4111
`+
/// # Current implementation
`
``
4112
`+
///
`
``
4113
`` +
/// This uses the same sorting algorithm as sort_unstable_by
.
``
``
4114
`+
///
`
``
4115
`+
/// # Examples
`
``
4116
`+
///
`
``
4117
/// ```
``
4118
`+
/// #![feature(sort_floats)]
`
``
4119
`+
/// let mut v = [2.6, -5e-8, f32::NAN, 8.29, f32::INFINITY, -1.0, 0.0, -f32::INFINITY, -0.0];
`
``
4120
`+
///
`
``
4121
`+
/// v.sort_floats();
`
``
4122
`+
/// let sorted = [-f32::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f32::INFINITY, f32::NAN];
`
``
4123
`+
/// assert_eq!(&v[..8], &sorted[..8]);
`
``
4124
`+
/// assert!(v[8].is_nan());
`
``
4125
/// ```
``
4126
`+
#[unstable(feature = "sort_floats", issue = "93396")]
`
``
4127
`+
#[inline]
`
``
4128
`+
pub fn sort_floats(&mut self) {
`
``
4129
`+
self.sort_unstable_by(f32::total_cmp);
`
``
4130
`+
}
`
``
4131
`+
}
`
``
4132
+
``
4133
`+
#[cfg(not(bootstrap))]
`
``
4134
`+
#[cfg(not(test))]
`
``
4135
`+
impl [f64] {
`
``
4136
`+
/// Sorts the slice of floats.
`
``
4137
`+
///
`
``
4138
`+
/// This sort is in-place (i.e. does not allocate), O(n * log(n)) worst-case, and uses
`
``
4139
`` +
/// the ordering defined by [f64::total_cmp
].
``
``
4140
`+
///
`
``
4141
`+
/// # Current implementation
`
``
4142
`+
///
`
``
4143
`` +
/// This uses the same sorting algorithm as sort_unstable_by
.
``
``
4144
`+
///
`
``
4145
`+
/// # Examples
`
``
4146
`+
///
`
``
4147
/// ```
``
4148
`+
/// #![feature(sort_floats)]
`
``
4149
`+
/// let mut v = [2.6, -5e-8, f64::NAN, 8.29, f64::INFINITY, -1.0, 0.0, -f64::INFINITY, -0.0];
`
``
4150
`+
///
`
``
4151
`+
/// v.sort_floats();
`
``
4152
`+
/// let sorted = [-f64::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f64::INFINITY, f64::NAN];
`
``
4153
`+
/// assert_eq!(&v[..8], &sorted[..8]);
`
``
4154
`+
/// assert!(v[8].is_nan());
`
``
4155
/// ```
``
4156
`+
#[unstable(feature = "sort_floats", issue = "93396")]
`
``
4157
`+
#[inline]
`
``
4158
`+
pub fn sort_floats(&mut self) {
`
``
4159
`+
self.sort_unstable_by(f64::total_cmp);
`
``
4160
`+
}
`
``
4161
`+
}
`
``
4162
+
4103
4163
`trait CloneFromSpec {
`
4104
4164
`fn spec_clone_from(&mut self, src: &[T]);
`
4105
4165
`}
`