rust/library/core/tests
Jacob Pratt 5880752b9a
Rollup merge of #131784 - Urgau:stabilize-midpoint, r=dtolnay
Stabilize unsigned and float variants of `num_midpoint` feature

This PR proposes that we stabilize the unsigned variants of the [`num_midpoint`](https://github.com/rust-lang/rust/issues/110840#issue-1684506201) feature as well as the floats variants, since they are not subject to any unresolved questions, which is equivalent to doing `(a + b) / 2` (and `(a + b) >> 1`) in a sufficiently large number.

The stabilized API surface would be:

```rust
/// Calculates the middle point of `self` and `rhs`.
///
/// `midpoint(a, b)` is `(a + b) / 2` as if it were performed in a sufficiently-large unsigned integral type.
/// This implies that the result is always rounded towards negative infinity and that no overflow will ever occur.

impl u{8,16,32,64,128,size} {
    pub const fn midpoint(self, rhs: Self) -> Self;
}

impl NonZeroU{8,16,32,64,size} {
    pub const fn midpoint(self, rhs: Self) -> Self;
}

impl f{32,64} {
    pub const fn midpoint(self, rhs: Self) -> Self;
}
```

The signed variants `u{8,16,32,64,128,size}` would remain gated, until a decision is made about the rounding mode, in other words that the [unresolved questions](https://github.com/rust-lang/rust/issues/110840#issue-1684506201) are resolved.

cc `@rust-lang/libs-api`
cc `@scottmcm`
r? libs-api
2024-12-01 21:38:24 -05:00
..
async_iter Remove unnecessary lets and borrowing from Waker::noop() usage. 2024-01-17 12:00:27 -08:00
ffi CStr: derive PartialEq, Eq; add test for Ord 2024-07-25 14:18:40 +03:00
fmt Shorten the MaybeUninit Debug implementation 2024-11-22 19:46:34 -05:00
hash Library: Rename "object safe" to "dyn compatible" 2024-10-09 18:48:29 +02:00
io Make io::BorrowedCursor::advance safe 2024-02-07 16:46:28 +01:00
iter distinguish overflow and unimplemented in Step::steps_between 2024-11-21 15:49:55 -08:00
net core/net: add Ipv[46]Addr::from_octets, Ipv6Addr::from_segments 2024-10-13 20:26:23 +02:00
num Add test for all midpoint expectations 2024-10-26 22:08:34 +02:00
ops Explicitly specify type parameter on FromResidual impls in stdlib. 2024-08-12 12:54:18 -05:00
panic Fix test (location_const_file) 2022-10-08 11:48:53 +00:00
alloc.rs rename ptr::invalid -> ptr::without_provenance 2024-02-21 20:15:52 +01:00
any.rs Adjust library tests for unused_tuple_struct_fields -> dead_code 2024-01-02 15:34:37 -05:00
array.rs Reformat use declarations. 2024-07-29 08:26:52 +10:00
ascii.rs Optimize escape_ascii 2024-10-09 17:17:50 -04:00
ascii_char.rs core: optimise Debug impl for ascii::Char 2024-08-09 22:50:57 +02:00
asserting.rs Spelling library/ 2023-04-26 02:10:22 -04:00
atomic.rs update bootstrap configs 2024-10-15 20:30:23 -07:00
bool.rs fix library and rustdoc tests 2023-04-16 11:38:52 +00:00
cell.rs apply fmt 2024-01-11 15:04:48 +03:00
char.rs remove redundant imports 2023-12-10 10:56:22 +08:00
clone.rs Update core CloneToUninit tests 2024-11-13 13:42:41 -06:00
cmp.rs Reformat use declarations. 2024-07-29 08:26:52 +10:00
const_ptr.rs cleanup code w/ pointers in std a little 2022-08-05 16:47:49 +04:00
convert.rs fix library and rustdoc tests 2023-04-16 11:38:52 +00:00
error.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
ffi.rs CStr: derive PartialEq, Eq; add test for Ord 2024-07-25 14:18:40 +03:00
future.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
intrinsics.rs Step bootstrap cfgs 2024-05-01 22:19:11 -04:00
lazy.rs Do not run test where it cannot run 2024-10-17 09:33:39 -04:00
lib.rs Rollup merge of #131784 - Urgau:stabilize-midpoint, r=dtolnay 2024-12-01 21:38:24 -05:00
macros.rs Rustfmt 2024-09-13 15:18:30 -03:00
manually_drop.rs Flip cfg's for bootstrap bump 2023-07-12 21:38:55 -04:00
mem.rs fix UB in a test 2024-09-09 16:17:34 +02:00
nonzero.rs Add LowerExp and UpperExp implementations 2024-10-08 12:09:03 +02:00
ops.rs Explicitly specify type parameter on FromResidual impls in stdlib. 2024-08-12 12:54:18 -05:00
option.rs Make Option::as_[mut_]slice const 2024-06-19 21:44:47 +01:00
panic.rs Add newlines 2022-09-27 19:23:52 +00:00
pattern.rs mv std libs to library/ 2020-07-27 19:51:13 -05:00
pin.rs Partially stabilize const_pin 2024-10-16 21:24:38 +01:00
pin_macro.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
ptr.rs add test for bytewise ptr::swap of a pointer 2024-11-30 10:42:17 +01:00
result.rs Reformat use declarations. 2024-07-29 08:26:52 +10:00
simd.rs Fix library tests 2023-11-26 08:50:39 -05:00
slice.rs Support ranges in <[T]>::get_many_mut() 2024-11-25 10:04:06 +02:00
str.rs Update paths in comments. 2022-12-30 14:00:42 +01:00
str_lossy.rs Stabilize Utf8Chunks 2024-04-24 15:27:47 -07:00
task.rs Remove test of static Context 2023-01-02 10:33:23 -08:00
time.rs core: add Duration constructors 2024-01-24 14:24:57 +01:00
tuple.rs mv std libs to library/ 2020-07-27 19:51:13 -05:00
unicode.rs revert changes to unicode stability 2022-07-08 21:18:15 +00:00
waker.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00