Stuart Cook
dd4f062b07
Rollup merge of #128399 - mammothbane:master, r=Amanieu,tgross35
...
liballoc: introduce String, Vec const-slicing
This change `const`-qualifies many methods on `Vec` and `String`, notably `as_slice`, `as_str`, `len`. These changes are made behind the unstable feature flag `const_vec_string_slice`.
## Motivation
This is to support simultaneous variance over ownership and constness. I have an enum type that may contain either `String` or `&str`, and I want to produce a `&str` from it in a possibly-`const` context.
```rust
enum StrOrString<'s> {
Str(&'s str),
String(String),
}
impl<'s> StrOrString<'s> {
const fn as_str(&self) -> &str {
match self {
// In a const-context, I really only expect to see this variant, but I can't switch the implementation
// in some mode like #[cfg(const)] -- there has to be a single body
Self::Str(s) => s,
// so this is a problem, since it's not `const`
Self::String(s) => s.as_str(),
}
}
}
```
Currently `String` and `Vec` don't support this, but can without functional changes. Similar logic applies for `len`, `capacity`, `is_empty`.
## Changes
The essential thing enabling this change is that `Unique::as_ptr` is `const`. This lets us convert `RawVec::ptr` -> `Vec::as_ptr` -> `Vec::as_slice` -> `String::as_str`.
I had to move the `Deref` implementations into `as_{str,slice}` because `Deref` isn't `#[const_trait]`, but I would expect this change to be invisible up to inlining. I moved the `DerefMut` implementations as well for uniformity.
2024-10-07 15:37:06 +11:00
..
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-09-22 19:11:29 -04:00
2024-08-18 16:07:33 -07:00
2024-08-30 07:14:31 +00:00
2024-10-07 15:37:06 +11:00
2024-09-24 23:12:02 +02:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 15:52:23 -07:00
2024-09-04 06:28:32 -04:00
2024-09-04 06:28:32 -04:00
2024-09-04 06:28:32 -04:00
2024-09-04 06:28:32 -04:00
2024-09-04 06:28:32 -04:00
2024-09-04 06:28:32 -04:00
2024-09-04 06:28:32 -04:00
2024-09-04 06:28:32 -04:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 15:52:23 -07:00
2024-09-24 23:12:02 +02:00
2024-08-13 16:23:18 -04:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-05-21 19:22:04 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-26 15:30:47 -07:00
2024-06-26 15:05:01 -07:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-04-24 08:05:29 +00:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2024-07-29 08:26:52 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 15:52:23 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-09-24 08:44:26 +00:00
2024-08-02 17:45:55 -04:00
2024-08-02 17:45:55 -04:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-26 15:05:01 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-09-14 13:30:35 +08:00
2024-08-18 16:07:33 -07:00
2024-08-18 15:52:23 -07:00
2024-08-18 16:07:33 -07:00
2024-06-28 19:05:01 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-19 23:10:46 +00:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-07-09 22:47:35 +02:00
2024-08-23 14:37:36 +00:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-06-20 22:16:59 -07:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-08-18 16:07:33 -07:00
2024-07-29 18:14:35 +08:00
2024-07-09 22:47:35 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-07-09 22:47:35 +02:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-07-17 11:01:29 +01:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-10-03 15:37:31 -04:00
2024-10-03 15:37:31 -04:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-10-04 14:11:34 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-08-18 15:52:23 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 15:52:23 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-23 14:37:36 +00:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:43 +08:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:43 +08:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:43 +08:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:43 +08:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:43 +08:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:43 +08:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:43 +08:00
2024-08-03 10:55:43 +08:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:43 +08:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:43 +08:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:46 +08:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-03 10:55:46 +08:00
2024-06-03 13:24:44 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-06-16 18:23:48 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-19 23:10:46 +00:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-09-24 23:12:02 +02:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-09-25 19:00:19 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 13:24:44 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 15:52:23 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-09-24 23:12:02 +02:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-03 14:17:16 +10:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-06-10 00:06:02 -07:00
2024-08-18 16:07:33 -07:00
2024-08-30 07:14:31 +00:00
2024-06-03 13:24:44 +10:00
2024-08-18 16:07:33 -07:00
2024-07-07 17:11:05 +02:00
2024-07-07 17:11:05 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-07-07 17:11:05 +02:00
2024-07-07 17:11:05 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-07-07 17:11:05 +02:00
2024-10-05 19:10:47 -04:00
2024-10-05 19:10:47 -04:00
2024-10-05 19:10:47 -04:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-10-05 18:36:47 -04:00
2024-10-05 18:36:47 -04:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-07-29 09:50:07 +02:00
2024-08-10 12:07:17 +02:00
2024-08-10 12:07:17 +02:00
2024-08-10 12:07:17 +02:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-18 16:07:33 -07:00
2024-08-10 12:07:17 +02:00
2024-06-03 14:17:16 +10:00
2024-06-03 14:17:16 +10:00