rust/library/core/tests
Trevor Gross 86721a4c90
Rollup merge of #124941 - Skgland:stabilize-const-int-from-str, r=dtolnay
Stabilize const `{integer}::from_str_radix` i.e. `const_int_from_str`

This PR stabilizes the feature `const_int_from_str`.

- ACP Issue: rust-lang/libs-team#74
- Implementation PR: rust-lang/rust#99322
- Part of Tracking Issue: rust-lang/rust#59133

API Change Diff:

```diff
impl {integer} {
- pub       fn from_str_radix(src: &str, radix: u32) -> Result<Self, ParseIntError>;
+ pub const fn from_str_radix(src: &str, radix: u32) -> Result<Self, ParseIntError>;
}

impl ParseIntError {
- pub       fn kind(&self) -> &IntErrorKind;
+ pub const fn kind(&self) -> &IntErrorKind;
}
```
This makes it easier to parse integers at compile-time, e.g.
the example from the Tracking Issue:

```rust
env!("SOMETHING").parse::<usize>().unwrap()
```

could now be achived  with

```rust
match usize::from_str_radix(env!("SOMETHING"), 10) {
  Ok(val) => val,
  Err(err) => panic!("Invalid value for SOMETHING environment variable."),
}
```

rather than having to depend on a library that implements or manually implement the parsing at compile-time.

---

Checklist based on [Libs Stabilization Guide - When there's const involved](https://std-dev-guide.rust-lang.org/development/stabilization.html#when-theres-const-involved)

I am treating this as a [partial stabilization](https://std-dev-guide.rust-lang.org/development/stabilization.html#partial-stabilizations) as it shares a tracking issue (and is rather small), so directly opening the partial stabilization PR for the subset (feature `const_int_from_str`) being stabilized.

- [x] ping Constant Evaluation WG
- [x] no unsafe involved
- [x] no `#[allow_internal_unstable]`
- [ ] usage of `intrinsic::const_eval_select` rust-lang/rust#124625 in `from_str_radix_assert` to change the error message between compile-time and run-time
- [ ] [rust-labg/libs-api FCP](https://github.com/rust-lang/rust/pull/124941#issuecomment-2207021921)
2024-07-26 19:03:04 -04: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 Mark format! with must_use hint 2024-07-06 14:24:20 +02:00
hash rename ptr::invalid -> ptr::without_provenance 2024-02-21 20:15:52 +01:00
io Make io::BorrowedCursor::advance safe 2024-02-07 16:46:28 +01:00
iter regression test for leaks in the the Filter::next_chunk implementation 2024-06-25 23:22:27 +02:00
net Add blank lines after module-level // comments. 2024-06-20 09:23:20 +10:00
num Rollup merge of #126613 - tgross35:log-test-update, r=cuviper 2024-06-21 09:12:35 +02:00
ops Expand the docs for ops::ControlFlow a bit 2021-02-06 22:36:05 -08: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 Replace NonZero::<_>::new with NonZero::new. 2024-02-15 08:09:42 +01:00
ascii.rs optimize Cstr/EscapeAscii display 2023-06-29 01:55:03 +02:00
asserting.rs Spelling library/ 2023-04-26 02:10:22 -04:00
atomic.rs Adjust library tests for unused_tuple_struct_fields -> dead_code 2024-01-02 15:34:37 -05: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 Add core::clone::CloneToUninit. 2024-06-22 08:08:00 -07:00
cmp.rs fix library and rustdoc tests 2023-04-16 11:38:52 +00: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 apply fmt 2024-01-11 15:04:48 +03:00
ffi.rs CStr: derive PartialEq, Eq; add test for Ord 2024-07-25 14:18:40 +03:00
future.rs Avoid ref when using format! for perf 2024-07-19 12:23:49 -04:00
intrinsics.rs Step bootstrap cfgs 2024-05-01 22:19:11 -04:00
lazy.rs Rollup merge of #110419 - jsoref:spelling-library, r=jyn514 2023-04-26 18:51:41 +02:00
lib.rs Rollup merge of #124941 - Skgland:stabilize-const-int-from-str, r=dtolnay 2024-07-26 19:03:04 -04:00
macros.rs Update tests 2024-02-07 10:42:01 +08:00
manually_drop.rs Flip cfg's for bootstrap bump 2023-07-12 21:38:55 -04:00
mem.rs [ACP 362] genericize ptr::from_raw_parts 2024-05-29 09:34:16 -07:00
nonzero.rs Replace NonZero::<_>::new with NonZero::new. 2024-02-15 08:09:42 +01:00
ops.rs Test not never 2021-11-21 19:10:39 -08: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
pin_macro.rs Add blank lines after module-level // comments. 2024-06-20 09:23:20 +10:00
pin.rs Make some methods of Pin<&mut T> unstable const 2020-09-18 19:23:50 +02:00
ptr.rs [ACP 362] genericize ptr::from_raw_parts 2024-05-29 09:34:16 -07:00
result.rs Allow for_loops_over_fallibles in test that tests &mut Result as IntoIterator. 2024-05-15 13:51:16 -05:00
simd.rs Fix library tests 2023-11-26 08:50:39 -05:00
slice.rs Auto merge of #124032 - Voultapher:a-new-sort, r=thomcc 2024-06-20 20:40:43 +00:00
str_lossy.rs Stabilize Utf8Chunks 2024-04-24 15:27:47 -07:00
str.rs Update paths in comments. 2022-12-30 14:00:42 +01: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
unicode.rs revert changes to unicode stability 2022-07-08 21:18:15 +00:00
waker.rs rename ptr::invalid -> ptr::without_provenance 2024-02-21 20:15:52 +01:00