1
Fork 0

replace version placeholder

This commit is contained in:
Boxy 2025-03-31 18:09:32 +01:00
parent 97c966bb40
commit a6c2ec04b4
32 changed files with 149 additions and 149 deletions

View file

@ -63,7 +63,7 @@ declare_features! (
/// Allows using `const` operands in inline assembly. /// Allows using `const` operands in inline assembly.
(accepted, asm_const, "1.82.0", Some(93332)), (accepted, asm_const, "1.82.0", Some(93332)),
/// Allows using `label` operands in inline assembly. /// Allows using `label` operands in inline assembly.
(accepted, asm_goto, "CURRENT_RUSTC_VERSION", Some(119364)), (accepted, asm_goto, "1.87.0", Some(119364)),
/// Allows using `sym` operands in inline assembly. /// Allows using `sym` operands in inline assembly.
(accepted, asm_sym, "1.66.0", Some(93333)), (accepted, asm_sym, "1.66.0", Some(93333)),
/// Allows the definition of associated constants in `trait` or `impl` blocks. /// Allows the definition of associated constants in `trait` or `impl` blocks.
@ -332,7 +332,7 @@ declare_features! (
/// Allows `use<'a, 'b, A, B>` in `impl Trait + use<...>` for precise capture of generic args. /// Allows `use<'a, 'b, A, B>` in `impl Trait + use<...>` for precise capture of generic args.
(accepted, precise_capturing, "1.82.0", Some(123432)), (accepted, precise_capturing, "1.82.0", Some(123432)),
/// Allows `use<..>` precise capturign on impl Trait in traits. /// Allows `use<..>` precise capturign on impl Trait in traits.
(accepted, precise_capturing_in_traits, "CURRENT_RUSTC_VERSION", Some(130044)), (accepted, precise_capturing_in_traits, "1.87.0", Some(130044)),
/// Allows procedural macros in `proc-macro` crates. /// Allows procedural macros in `proc-macro` crates.
(accepted, proc_macro, "1.29.0", Some(38356)), (accepted, proc_macro, "1.29.0", Some(38356)),
/// Allows multi-segment paths in attributes and derives. /// Allows multi-segment paths in attributes and derives.

View file

@ -247,7 +247,7 @@ declare_features! (
/// Allows unnamed fields of struct and union type /// Allows unnamed fields of struct and union type
(removed, unnamed_fields, "1.83.0", Some(49804), Some("feature needs redesign")), (removed, unnamed_fields, "1.83.0", Some(49804), Some("feature needs redesign")),
(removed, unsafe_no_drop_flag, "1.0.0", None, None), (removed, unsafe_no_drop_flag, "1.0.0", None, None),
(removed, unsized_tuple_coercion, "CURRENT_RUSTC_VERSION", Some(42877), (removed, unsized_tuple_coercion, "1.87.0", Some(42877),
Some("The feature restricts possible layouts for tuples, and this restriction is not worth it.")), Some("The feature restricts possible layouts for tuples, and this restriction is not worth it.")),
/// Allows `union` fields that don't implement `Copy` as long as they don't have any drop glue. /// Allows `union` fields that don't implement `Copy` as long as they don't have any drop glue.
(removed, untagged_unions, "1.13.0", Some(55149), (removed, untagged_unions, "1.13.0", Some(55149),

View file

@ -474,7 +474,7 @@ declare_features! (
/// Allows `dyn* Trait` objects. /// Allows `dyn* Trait` objects.
(incomplete, dyn_star, "1.65.0", Some(102425)), (incomplete, dyn_star, "1.65.0", Some(102425)),
/// Allows the .use postfix syntax `x.use` and use closures `use |x| { ... }` /// Allows the .use postfix syntax `x.use` and use closures `use |x| { ... }`
(incomplete, ergonomic_clones, "CURRENT_RUSTC_VERSION", Some(132290)), (incomplete, ergonomic_clones, "1.87.0", Some(132290)),
/// Allows exhaustive pattern matching on types that contain uninhabited types. /// Allows exhaustive pattern matching on types that contain uninhabited types.
(unstable, exhaustive_patterns, "1.13.0", Some(51085)), (unstable, exhaustive_patterns, "1.13.0", Some(51085)),
/// Allows explicit tail calls via `become` expression. /// Allows explicit tail calls via `become` expression.
@ -511,7 +511,7 @@ declare_features! (
/// Allows generic parameters and where-clauses on free & associated const items. /// Allows generic parameters and where-clauses on free & associated const items.
(incomplete, generic_const_items, "1.73.0", Some(113521)), (incomplete, generic_const_items, "1.73.0", Some(113521)),
/// Allows the type of const generics to depend on generic parameters /// Allows the type of const generics to depend on generic parameters
(incomplete, generic_const_parameter_types, "CURRENT_RUSTC_VERSION", Some(137626)), (incomplete, generic_const_parameter_types, "1.87.0", Some(137626)),
/// Allows any generic constants being used as pattern type range ends /// Allows any generic constants being used as pattern type range ends
(incomplete, generic_pattern_types, "1.86.0", Some(136574)), (incomplete, generic_pattern_types, "1.86.0", Some(136574)),
/// Allows registering static items globally, possibly across crates, to iterate over at runtime. /// Allows registering static items globally, possibly across crates, to iterate over at runtime.
@ -602,7 +602,7 @@ declare_features! (
/// Allows macro attributes on expressions, statements and non-inline modules. /// Allows macro attributes on expressions, statements and non-inline modules.
(unstable, proc_macro_hygiene, "1.30.0", Some(54727)), (unstable, proc_macro_hygiene, "1.30.0", Some(54727)),
/// Allows the use of raw-dylibs on ELF platforms /// Allows the use of raw-dylibs on ELF platforms
(incomplete, raw_dylib_elf, "CURRENT_RUSTC_VERSION", Some(135694)), (incomplete, raw_dylib_elf, "1.87.0", Some(135694)),
/// Makes `&` and `&mut` patterns eat only one layer of references in Rust 2024. /// Makes `&` and `&mut` patterns eat only one layer of references in Rust 2024.
(incomplete, ref_pat_eat_one_layer_2024, "1.79.0", Some(123076)), (incomplete, ref_pat_eat_one_layer_2024, "1.79.0", Some(123076)),
/// Makes `&` and `&mut` patterns eat only one layer of references in Rust 2024—structural variant /// Makes `&` and `&mut` patterns eat only one layer of references in Rust 2024—structural variant
@ -664,14 +664,14 @@ declare_features! (
/// Allows using the `#[used(linker)]` (or `#[used(compiler)]`) attribute. /// Allows using the `#[used(linker)]` (or `#[used(compiler)]`) attribute.
(unstable, used_with_arg, "1.60.0", Some(93798)), (unstable, used_with_arg, "1.60.0", Some(93798)),
/// Allows use of attributes in `where` clauses. /// Allows use of attributes in `where` clauses.
(unstable, where_clause_attrs, "CURRENT_RUSTC_VERSION", Some(115590)), (unstable, where_clause_attrs, "1.87.0", Some(115590)),
/// Allows use of x86 `AMX` target-feature attributes and intrinsics /// Allows use of x86 `AMX` target-feature attributes and intrinsics
(unstable, x86_amx_intrinsics, "1.81.0", Some(126622)), (unstable, x86_amx_intrinsics, "1.81.0", Some(126622)),
/// Allows use of the `xop` target-feature /// Allows use of the `xop` target-feature
(unstable, xop_target_feature, "1.81.0", Some(127208)), (unstable, xop_target_feature, "1.81.0", Some(127208)),
/// Allows `do yeet` expressions /// Allows `do yeet` expressions
(unstable, yeet_expr, "1.62.0", Some(96373)), (unstable, yeet_expr, "1.62.0", Some(96373)),
(unstable, yield_expr, "CURRENT_RUSTC_VERSION", Some(43122)), (unstable, yield_expr, "1.87.0", Some(43122)),
// !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! // !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!!
// Features are listed in alphabetical order. Tidy will fail if you don't keep it this way. // Features are listed in alphabetical order. Tidy will fail if you don't keep it this way.
// !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! // !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!!

View file

@ -952,7 +952,7 @@ impl<T, A: Allocator> Box<mem::MaybeUninit<T>, A> {
/// assert_eq!(*x, i); /// assert_eq!(*x, i);
/// } /// }
/// ``` /// ```
#[stable(feature = "box_uninit_write", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "box_uninit_write", since = "1.87.0")]
#[inline] #[inline]
pub fn write(mut boxed: Self, value: T) -> Box<T, A> { pub fn write(mut boxed: Self, value: T) -> Box<T, A> {
unsafe { unsafe {

View file

@ -1151,7 +1151,7 @@ impl<T, A: Allocator> LinkedList<T, A> {
/// assert_eq!(evens.into_iter().collect::<Vec<_>>(), vec![2, 4, 6, 8, 14]); /// assert_eq!(evens.into_iter().collect::<Vec<_>>(), vec![2, 4, 6, 8, 14]);
/// assert_eq!(odds.into_iter().collect::<Vec<_>>(), vec![1, 3, 5, 9, 11, 13, 15]); /// assert_eq!(odds.into_iter().collect::<Vec<_>>(), vec![1, 3, 5, 9, 11, 13, 15]);
/// ``` /// ```
#[stable(feature = "extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "extract_if", since = "1.87.0")]
pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A> pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A>
where where
F: FnMut(&mut T) -> bool, F: FnMut(&mut T) -> bool,
@ -1931,7 +1931,7 @@ impl<'a, T, A: Allocator> CursorMut<'a, T, A> {
} }
/// An iterator produced by calling `extract_if` on LinkedList. /// An iterator produced by calling `extract_if` on LinkedList.
#[stable(feature = "extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "extract_if", since = "1.87.0")]
#[must_use = "iterators are lazy and do nothing unless consumed"] #[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct ExtractIf< pub struct ExtractIf<
'a, 'a,
@ -1946,7 +1946,7 @@ pub struct ExtractIf<
old_len: usize, old_len: usize,
} }
#[stable(feature = "extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "extract_if", since = "1.87.0")]
impl<T, F, A: Allocator> Iterator for ExtractIf<'_, T, F, A> impl<T, F, A: Allocator> Iterator for ExtractIf<'_, T, F, A>
where where
F: FnMut(&mut T) -> bool, F: FnMut(&mut T) -> bool,
@ -1975,7 +1975,7 @@ where
} }
} }
#[stable(feature = "extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "extract_if", since = "1.87.0")]
impl<T: fmt::Debug, F> fmt::Debug for ExtractIf<'_, T, F> { impl<T: fmt::Debug, F> fmt::Debug for ExtractIf<'_, T, F> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_tuple("ExtractIf").field(&self.list).finish() f.debug_tuple("ExtractIf").field(&self.list).finish()

View file

@ -1043,7 +1043,7 @@ impl String {
#[inline] #[inline]
#[must_use = "`self` will be dropped if the result is not used"] #[must_use = "`self` will be dropped if the result is not used"]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
#[rustc_allow_const_fn_unstable(const_precise_live_drops)] #[rustc_allow_const_fn_unstable(const_precise_live_drops)]
pub const fn into_bytes(self) -> Vec<u8> { pub const fn into_bytes(self) -> Vec<u8> {
self.vec self.vec
@ -1062,7 +1062,7 @@ impl String {
#[must_use] #[must_use]
#[stable(feature = "string_as_str", since = "1.7.0")] #[stable(feature = "string_as_str", since = "1.7.0")]
#[rustc_diagnostic_item = "string_as_str"] #[rustc_diagnostic_item = "string_as_str"]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const fn as_str(&self) -> &str { pub const fn as_str(&self) -> &str {
// SAFETY: String contents are stipulated to be valid UTF-8, invalid contents are an error // SAFETY: String contents are stipulated to be valid UTF-8, invalid contents are an error
// at construction. // at construction.
@ -1085,7 +1085,7 @@ impl String {
#[must_use] #[must_use]
#[stable(feature = "string_as_str", since = "1.7.0")] #[stable(feature = "string_as_str", since = "1.7.0")]
#[rustc_diagnostic_item = "string_as_mut_str"] #[rustc_diagnostic_item = "string_as_mut_str"]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const fn as_mut_str(&mut self) -> &mut str { pub const fn as_mut_str(&mut self) -> &mut str {
// SAFETY: String contents are stipulated to be valid UTF-8, invalid contents are an error // SAFETY: String contents are stipulated to be valid UTF-8, invalid contents are an error
// at construction. // at construction.
@ -1134,7 +1134,7 @@ impl String {
/// assert_eq!(string, "abcdecdeabecde"); /// assert_eq!(string, "abcdecdeabecde");
/// ``` /// ```
#[cfg(not(no_global_oom_handling))] #[cfg(not(no_global_oom_handling))]
#[stable(feature = "string_extend_from_within", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "string_extend_from_within", since = "1.87.0")]
pub fn extend_from_within<R>(&mut self, src: R) pub fn extend_from_within<R>(&mut self, src: R)
where where
R: RangeBounds<usize>, R: RangeBounds<usize>,
@ -1159,7 +1159,7 @@ impl String {
#[inline] #[inline]
#[must_use] #[must_use]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const fn capacity(&self) -> usize { pub const fn capacity(&self) -> usize {
self.vec.capacity() self.vec.capacity()
} }
@ -1425,7 +1425,7 @@ impl String {
#[inline] #[inline]
#[must_use] #[must_use]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const fn as_bytes(&self) -> &[u8] { pub const fn as_bytes(&self) -> &[u8] {
self.vec.as_slice() self.vec.as_slice()
} }
@ -1779,7 +1779,7 @@ impl String {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const unsafe fn as_mut_vec(&mut self) -> &mut Vec<u8> { pub const unsafe fn as_mut_vec(&mut self) -> &mut Vec<u8> {
&mut self.vec &mut self.vec
} }
@ -1801,7 +1801,7 @@ impl String {
#[inline] #[inline]
#[must_use] #[must_use]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
#[rustc_confusables("length", "size")] #[rustc_confusables("length", "size")]
pub const fn len(&self) -> usize { pub const fn len(&self) -> usize {
self.vec.len() self.vec.len()
@ -1821,7 +1821,7 @@ impl String {
#[inline] #[inline]
#[must_use] #[must_use]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const fn is_empty(&self) -> bool { pub const fn is_empty(&self) -> bool {
self.len() == 0 self.len() == 0
} }
@ -3140,7 +3140,7 @@ impl From<String> for Vec<u8> {
} }
} }
#[stable(feature = "try_from_vec_u8_for_string", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "try_from_vec_u8_for_string", since = "1.87.0")]
impl TryFrom<Vec<u8>> for String { impl TryFrom<Vec<u8>> for String {
type Error = FromUtf8Error; type Error = FromUtf8Error;
/// Converts the given [`Vec<u8>`] into a [`String`] if it contains valid UTF-8 data. /// Converts the given [`Vec<u8>`] into a [`String`] if it contains valid UTF-8 data.

View file

@ -15,7 +15,7 @@ use crate::alloc::{Allocator, Global};
/// let mut v = vec![0, 1, 2]; /// let mut v = vec![0, 1, 2];
/// let iter: std::vec::ExtractIf<'_, _, _> = v.extract_if(.., |x| *x % 2 == 0); /// let iter: std::vec::ExtractIf<'_, _, _> = v.extract_if(.., |x| *x % 2 == 0);
/// ``` /// ```
#[stable(feature = "extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "extract_if", since = "1.87.0")]
#[derive(Debug)] #[derive(Debug)]
#[must_use = "iterators are lazy and do nothing unless consumed"] #[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct ExtractIf< pub struct ExtractIf<
@ -57,7 +57,7 @@ impl<'a, T, F, A: Allocator> ExtractIf<'a, T, F, A> {
} }
} }
#[stable(feature = "extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "extract_if", since = "1.87.0")]
impl<T, F, A: Allocator> Iterator for ExtractIf<'_, T, F, A> impl<T, F, A: Allocator> Iterator for ExtractIf<'_, T, F, A>
where where
F: FnMut(&mut T) -> bool, F: FnMut(&mut T) -> bool,
@ -93,7 +93,7 @@ where
} }
} }
#[stable(feature = "extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "extract_if", since = "1.87.0")]
impl<T, F, A: Allocator> Drop for ExtractIf<'_, T, F, A> { impl<T, F, A: Allocator> Drop for ExtractIf<'_, T, F, A> {
fn drop(&mut self) { fn drop(&mut self) {
unsafe { unsafe {

View file

@ -66,7 +66,7 @@ use core::ptr::{self, NonNull};
use core::slice::{self, SliceIndex}; use core::slice::{self, SliceIndex};
use core::{fmt, intrinsics}; use core::{fmt, intrinsics};
#[stable(feature = "extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "extract_if", since = "1.87.0")]
pub use self::extract_if::ExtractIf; pub use self::extract_if::ExtractIf;
use crate::alloc::{Allocator, Global}; use crate::alloc::{Allocator, Global};
use crate::borrow::{Cow, ToOwned}; use crate::borrow::{Cow, ToOwned};
@ -1267,7 +1267,7 @@ impl<T, A: Allocator> Vec<T, A> {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const fn capacity(&self) -> usize { pub const fn capacity(&self) -> usize {
self.buf.capacity() self.buf.capacity()
} }
@ -1582,7 +1582,7 @@ impl<T, A: Allocator> Vec<T, A> {
#[inline] #[inline]
#[stable(feature = "vec_as_slice", since = "1.7.0")] #[stable(feature = "vec_as_slice", since = "1.7.0")]
#[rustc_diagnostic_item = "vec_as_slice"] #[rustc_diagnostic_item = "vec_as_slice"]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const fn as_slice(&self) -> &[T] { pub const fn as_slice(&self) -> &[T] {
// SAFETY: `slice::from_raw_parts` requires pointee is a contiguous, aligned buffer of size // SAFETY: `slice::from_raw_parts` requires pointee is a contiguous, aligned buffer of size
// `len` containing properly-initialized `T`s. Data must not be mutated for the returned // `len` containing properly-initialized `T`s. Data must not be mutated for the returned
@ -1614,7 +1614,7 @@ impl<T, A: Allocator> Vec<T, A> {
#[inline] #[inline]
#[stable(feature = "vec_as_slice", since = "1.7.0")] #[stable(feature = "vec_as_slice", since = "1.7.0")]
#[rustc_diagnostic_item = "vec_as_mut_slice"] #[rustc_diagnostic_item = "vec_as_mut_slice"]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const fn as_mut_slice(&mut self) -> &mut [T] { pub const fn as_mut_slice(&mut self) -> &mut [T] {
// SAFETY: `slice::from_raw_parts_mut` requires pointee is a contiguous, aligned buffer of // SAFETY: `slice::from_raw_parts_mut` requires pointee is a contiguous, aligned buffer of
// size `len` containing properly-initialized `T`s. Data must not be accessed through any // size `len` containing properly-initialized `T`s. Data must not be accessed through any
@ -1686,7 +1686,7 @@ impl<T, A: Allocator> Vec<T, A> {
/// [`as_ptr`]: Vec::as_ptr /// [`as_ptr`]: Vec::as_ptr
/// [`as_non_null`]: Vec::as_non_null /// [`as_non_null`]: Vec::as_non_null
#[stable(feature = "vec_as_ptr", since = "1.37.0")] #[stable(feature = "vec_as_ptr", since = "1.37.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
#[rustc_never_returns_null_ptr] #[rustc_never_returns_null_ptr]
#[rustc_as_ptr] #[rustc_as_ptr]
#[inline] #[inline]
@ -1749,7 +1749,7 @@ impl<T, A: Allocator> Vec<T, A> {
/// [`as_ptr`]: Vec::as_ptr /// [`as_ptr`]: Vec::as_ptr
/// [`as_non_null`]: Vec::as_non_null /// [`as_non_null`]: Vec::as_non_null
#[stable(feature = "vec_as_ptr", since = "1.37.0")] #[stable(feature = "vec_as_ptr", since = "1.37.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
#[rustc_never_returns_null_ptr] #[rustc_never_returns_null_ptr]
#[rustc_as_ptr] #[rustc_as_ptr]
#[inline] #[inline]
@ -2700,7 +2700,7 @@ impl<T, A: Allocator> Vec<T, A> {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
#[rustc_confusables("length", "size")] #[rustc_confusables("length", "size")]
pub const fn len(&self) -> usize { pub const fn len(&self) -> usize {
let len = self.len; let len = self.len;
@ -2726,7 +2726,7 @@ impl<T, A: Allocator> Vec<T, A> {
/// ``` /// ```
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_diagnostic_item = "vec_is_empty"] #[rustc_diagnostic_item = "vec_is_empty"]
#[rustc_const_stable(feature = "const_vec_string_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_vec_string_slice", since = "1.87.0")]
pub const fn is_empty(&self) -> bool { pub const fn is_empty(&self) -> bool {
self.len() == 0 self.len() == 0
} }
@ -3715,7 +3715,7 @@ impl<T, A: Allocator> Vec<T, A> {
/// assert_eq!(items, vec![0, 0, 0, 0, 0, 0, 0, 2, 2, 2]); /// assert_eq!(items, vec![0, 0, 0, 0, 0, 0, 0, 2, 2, 2]);
/// assert_eq!(ones.len(), 3); /// assert_eq!(ones.len(), 3);
/// ``` /// ```
#[stable(feature = "extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "extract_if", since = "1.87.0")]
pub fn extract_if<F, R>(&mut self, range: R, filter: F) -> ExtractIf<'_, T, F, A> pub fn extract_if<F, R>(&mut self, range: R, filter: F) -> ExtractIf<'_, T, F, A>
where where
F: FnMut(&mut T) -> bool, F: FnMut(&mut T) -> bool,

View file

@ -337,7 +337,7 @@ impl char {
/// '1'.is_digit(1); /// '1'.is_digit(1);
/// ``` /// ```
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_char_classify", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_char_classify", since = "1.87.0")]
#[inline] #[inline]
pub const fn is_digit(self, radix: u32) -> bool { pub const fn is_digit(self, radix: u32) -> bool {
self.to_digit(radix).is_some() self.to_digit(radix).is_some()
@ -886,7 +886,7 @@ impl char {
/// ``` /// ```
#[must_use] #[must_use]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_char_classify", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_char_classify", since = "1.87.0")]
#[inline] #[inline]
pub const fn is_whitespace(self) -> bool { pub const fn is_whitespace(self) -> bool {
match self { match self {

View file

@ -210,7 +210,7 @@ impl SocketAddr {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
#[rustc_const_stable(feature = "const_sockaddr_setters", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_sockaddr_setters", since = "1.87.0")]
pub const fn set_ip(&mut self, new_ip: IpAddr) { pub const fn set_ip(&mut self, new_ip: IpAddr) {
// `match (*self, new_ip)` would have us mutate a copy of self only to throw it away. // `match (*self, new_ip)` would have us mutate a copy of self only to throw it away.
match (self, new_ip) { match (self, new_ip) {
@ -254,7 +254,7 @@ impl SocketAddr {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
#[rustc_const_stable(feature = "const_sockaddr_setters", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_sockaddr_setters", since = "1.87.0")]
pub const fn set_port(&mut self, new_port: u16) { pub const fn set_port(&mut self, new_port: u16) {
match *self { match *self {
SocketAddr::V4(ref mut a) => a.set_port(new_port), SocketAddr::V4(ref mut a) => a.set_port(new_port),
@ -360,7 +360,7 @@ impl SocketAddrV4 {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
#[rustc_const_stable(feature = "const_sockaddr_setters", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_sockaddr_setters", since = "1.87.0")]
pub const fn set_ip(&mut self, new_ip: Ipv4Addr) { pub const fn set_ip(&mut self, new_ip: Ipv4Addr) {
self.ip = new_ip; self.ip = new_ip;
} }
@ -396,7 +396,7 @@ impl SocketAddrV4 {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
#[rustc_const_stable(feature = "const_sockaddr_setters", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_sockaddr_setters", since = "1.87.0")]
pub const fn set_port(&mut self, new_port: u16) { pub const fn set_port(&mut self, new_port: u16) {
self.port = new_port; self.port = new_port;
} }
@ -458,7 +458,7 @@ impl SocketAddrV6 {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
#[rustc_const_stable(feature = "const_sockaddr_setters", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_sockaddr_setters", since = "1.87.0")]
pub const fn set_ip(&mut self, new_ip: Ipv6Addr) { pub const fn set_ip(&mut self, new_ip: Ipv6Addr) {
self.ip = new_ip; self.ip = new_ip;
} }
@ -494,7 +494,7 @@ impl SocketAddrV6 {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
#[rustc_const_stable(feature = "const_sockaddr_setters", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_sockaddr_setters", since = "1.87.0")]
pub const fn set_port(&mut self, new_port: u16) { pub const fn set_port(&mut self, new_port: u16) {
self.port = new_port; self.port = new_port;
} }
@ -542,7 +542,7 @@ impl SocketAddrV6 {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
#[rustc_const_stable(feature = "const_sockaddr_setters", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_sockaddr_setters", since = "1.87.0")]
pub const fn set_flowinfo(&mut self, new_flowinfo: u32) { pub const fn set_flowinfo(&mut self, new_flowinfo: u32) {
self.flowinfo = new_flowinfo; self.flowinfo = new_flowinfo;
} }
@ -585,7 +585,7 @@ impl SocketAddrV6 {
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
#[rustc_const_stable(feature = "const_sockaddr_setters", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_sockaddr_setters", since = "1.87.0")]
pub const fn set_scope_id(&mut self, new_scope_id: u32) { pub const fn set_scope_id(&mut self, new_scope_id: u32) {
self.scope_id = new_scope_id; self.scope_id = new_scope_id;
} }

View file

@ -244,8 +244,8 @@ macro_rules! int_impl {
/// ///
#[doc = concat!("assert_eq!(n.cast_unsigned(), ", stringify!($UnsignedT), "::MAX);")] #[doc = concat!("assert_eq!(n.cast_unsigned(), ", stringify!($UnsignedT), "::MAX);")]
/// ``` /// ```
#[stable(feature = "integer_sign_cast", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "integer_sign_cast", since = "1.87.0")]
#[rustc_const_stable(feature = "integer_sign_cast", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "integer_sign_cast", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline(always)] #[inline(always)]
@ -1355,8 +1355,8 @@ macro_rules! int_impl {
#[doc = concat!("assert_eq!(0x1", stringify!($SelfT), ".unbounded_shl(4), 0x10);")] #[doc = concat!("assert_eq!(0x1", stringify!($SelfT), ".unbounded_shl(4), 0x10);")]
#[doc = concat!("assert_eq!(0x1", stringify!($SelfT), ".unbounded_shl(129), 0);")] #[doc = concat!("assert_eq!(0x1", stringify!($SelfT), ".unbounded_shl(129), 0);")]
/// ``` /// ```
#[stable(feature = "unbounded_shifts", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "unbounded_shifts", since = "1.87.0")]
#[rustc_const_stable(feature = "unbounded_shifts", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "unbounded_shifts", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline] #[inline]
@ -1478,8 +1478,8 @@ macro_rules! int_impl {
#[doc = concat!("assert_eq!(0x10", stringify!($SelfT), ".unbounded_shr(129), 0);")] #[doc = concat!("assert_eq!(0x10", stringify!($SelfT), ".unbounded_shr(129), 0);")]
#[doc = concat!("assert_eq!(", stringify!($SelfT), "::MIN.unbounded_shr(129), -1);")] #[doc = concat!("assert_eq!(", stringify!($SelfT), "::MIN.unbounded_shr(129), -1);")]
/// ``` /// ```
#[stable(feature = "unbounded_shifts", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "unbounded_shifts", since = "1.87.0")]
#[rustc_const_stable(feature = "unbounded_shifts", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "unbounded_shifts", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline] #[inline]

View file

@ -169,8 +169,8 @@ macro_rules! midpoint_impl {
#[doc = concat!("assert_eq!(0", stringify!($SelfT), ".midpoint(-7), -3);")] #[doc = concat!("assert_eq!(0", stringify!($SelfT), ".midpoint(-7), -3);")]
#[doc = concat!("assert_eq!(0", stringify!($SelfT), ".midpoint(7), 3);")] #[doc = concat!("assert_eq!(0", stringify!($SelfT), ".midpoint(7), 3);")]
/// ``` /// ```
#[stable(feature = "num_midpoint_signed", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "num_midpoint_signed", since = "1.87.0")]
#[rustc_const_stable(feature = "num_midpoint_signed", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "num_midpoint_signed", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline] #[inline]
@ -221,8 +221,8 @@ macro_rules! midpoint_impl {
#[doc = concat!("assert_eq!(0", stringify!($SelfT), ".midpoint(-7), -3);")] #[doc = concat!("assert_eq!(0", stringify!($SelfT), ".midpoint(-7), -3);")]
#[doc = concat!("assert_eq!(0", stringify!($SelfT), ".midpoint(7), 3);")] #[doc = concat!("assert_eq!(0", stringify!($SelfT), ".midpoint(7), 3);")]
/// ``` /// ```
#[stable(feature = "num_midpoint_signed", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "num_midpoint_signed", since = "1.87.0")]
#[rustc_const_stable(feature = "num_midpoint_signed", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "num_midpoint_signed", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline] #[inline]

View file

@ -1704,8 +1704,8 @@ macro_rules! nonzero_integer_signedness_dependent_methods {
/// ///
#[doc = concat!("assert_eq!(n.cast_signed(), NonZero::new(-1", stringify!($Sint), ").unwrap());")] #[doc = concat!("assert_eq!(n.cast_signed(), NonZero::new(-1", stringify!($Sint), ").unwrap());")]
/// ``` /// ```
#[stable(feature = "integer_sign_cast", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "integer_sign_cast", since = "1.87.0")]
#[rustc_const_stable(feature = "integer_sign_cast", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "integer_sign_cast", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline(always)] #[inline(always)]
@ -2143,8 +2143,8 @@ macro_rules! nonzero_integer_signedness_dependent_methods {
/// ///
#[doc = concat!("assert_eq!(n.cast_unsigned(), NonZero::<", stringify!($Uint), ">::MAX);")] #[doc = concat!("assert_eq!(n.cast_unsigned(), NonZero::<", stringify!($Uint), ">::MAX);")]
/// ``` /// ```
#[stable(feature = "integer_sign_cast", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "integer_sign_cast", since = "1.87.0")]
#[rustc_const_stable(feature = "integer_sign_cast", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "integer_sign_cast", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline(always)] #[inline(always)]

View file

@ -273,8 +273,8 @@ macro_rules! uint_impl {
/// ///
#[doc = concat!("assert_eq!(n.cast_signed(), -1", stringify!($SignedT), ");")] #[doc = concat!("assert_eq!(n.cast_signed(), -1", stringify!($SignedT), ");")]
/// ``` /// ```
#[stable(feature = "integer_sign_cast", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "integer_sign_cast", since = "1.87.0")]
#[rustc_const_stable(feature = "integer_sign_cast", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "integer_sign_cast", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline(always)] #[inline(always)]
@ -1616,8 +1616,8 @@ macro_rules! uint_impl {
#[doc = concat!("assert_eq!(0x1", stringify!($SelfT), ".unbounded_shl(4), 0x10);")] #[doc = concat!("assert_eq!(0x1", stringify!($SelfT), ".unbounded_shl(4), 0x10);")]
#[doc = concat!("assert_eq!(0x1", stringify!($SelfT), ".unbounded_shl(129), 0);")] #[doc = concat!("assert_eq!(0x1", stringify!($SelfT), ".unbounded_shl(129), 0);")]
/// ``` /// ```
#[stable(feature = "unbounded_shifts", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "unbounded_shifts", since = "1.87.0")]
#[rustc_const_stable(feature = "unbounded_shifts", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "unbounded_shifts", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline] #[inline]
@ -1737,8 +1737,8 @@ macro_rules! uint_impl {
#[doc = concat!("assert_eq!(0x10", stringify!($SelfT), ".unbounded_shr(4), 0x1);")] #[doc = concat!("assert_eq!(0x10", stringify!($SelfT), ".unbounded_shr(4), 0x1);")]
#[doc = concat!("assert_eq!(0x10", stringify!($SelfT), ".unbounded_shr(129), 0);")] #[doc = concat!("assert_eq!(0x10", stringify!($SelfT), ".unbounded_shr(129), 0);")]
/// ``` /// ```
#[stable(feature = "unbounded_shifts", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "unbounded_shifts", since = "1.87.0")]
#[rustc_const_stable(feature = "unbounded_shifts", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "unbounded_shifts", since = "1.87.0")]
#[must_use = "this returns the result of the operation, \ #[must_use = "this returns the result of the operation, \
without modifying the original"] without modifying the original"]
#[inline] #[inline]
@ -3331,8 +3331,8 @@ macro_rules! uint_impl {
#[doc = concat!("assert!(0_", stringify!($SelfT), ".is_multiple_of(0));")] #[doc = concat!("assert!(0_", stringify!($SelfT), ".is_multiple_of(0));")]
#[doc = concat!("assert!(!6_", stringify!($SelfT), ".is_multiple_of(0));")] #[doc = concat!("assert!(!6_", stringify!($SelfT), ".is_multiple_of(0));")]
/// ``` /// ```
#[stable(feature = "unsigned_is_multiple_of", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "unsigned_is_multiple_of", since = "1.87.0")]
#[rustc_const_stable(feature = "unsigned_is_multiple_of", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "unsigned_is_multiple_of", since = "1.87.0")]
#[must_use] #[must_use]
#[inline] #[inline]
#[rustc_inherit_overflow_checks] #[rustc_inherit_overflow_checks]

View file

@ -764,8 +764,8 @@ impl<T: ?Sized> *const T {
/// // This would be incorrect, as the pointers are not correctly ordered: /// // This would be incorrect, as the pointers are not correctly ordered:
/// // ptr1.offset_from_unsigned(ptr2) /// // ptr1.offset_from_unsigned(ptr2)
/// ``` /// ```
#[stable(feature = "ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "ptr_sub_ptr", since = "1.87.0")]
#[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "1.87.0")]
#[inline] #[inline]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces #[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
pub const unsafe fn offset_from_unsigned(self, origin: *const T) -> usize pub const unsafe fn offset_from_unsigned(self, origin: *const T) -> usize
@ -809,8 +809,8 @@ impl<T: ?Sized> *const T {
/// ///
/// For non-`Sized` pointees this operation considers only the data pointers, /// For non-`Sized` pointees this operation considers only the data pointers,
/// ignoring the metadata. /// ignoring the metadata.
#[stable(feature = "ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "ptr_sub_ptr", since = "1.87.0")]
#[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "1.87.0")]
#[inline] #[inline]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces #[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
pub const unsafe fn byte_offset_from_unsigned<U: ?Sized>(self, origin: *const U) -> usize { pub const unsafe fn byte_offset_from_unsigned<U: ?Sized>(self, origin: *const U) -> usize {

View file

@ -937,8 +937,8 @@ impl<T: ?Sized> *mut T {
/// ///
/// // This would be incorrect, as the pointers are not correctly ordered: /// // This would be incorrect, as the pointers are not correctly ordered:
/// // ptr1.offset_from(ptr2) /// // ptr1.offset_from(ptr2)
#[stable(feature = "ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "ptr_sub_ptr", since = "1.87.0")]
#[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "1.87.0")]
#[inline] #[inline]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces #[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
pub const unsafe fn offset_from_unsigned(self, origin: *const T) -> usize pub const unsafe fn offset_from_unsigned(self, origin: *const T) -> usize
@ -959,8 +959,8 @@ impl<T: ?Sized> *mut T {
/// ///
/// For non-`Sized` pointees this operation considers only the data pointers, /// For non-`Sized` pointees this operation considers only the data pointers,
/// ignoring the metadata. /// ignoring the metadata.
#[stable(feature = "ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "ptr_sub_ptr", since = "1.87.0")]
#[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "1.87.0")]
#[inline] #[inline]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces #[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
pub const unsafe fn byte_offset_from_unsigned<U: ?Sized>(self, origin: *mut U) -> usize { pub const unsafe fn byte_offset_from_unsigned<U: ?Sized>(self, origin: *mut U) -> usize {

View file

@ -900,8 +900,8 @@ impl<T: ?Sized> NonNull<T> {
/// ``` /// ```
#[inline] #[inline]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces #[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
#[stable(feature = "ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "ptr_sub_ptr", since = "1.87.0")]
#[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "1.87.0")]
pub const unsafe fn offset_from_unsigned(self, subtracted: NonNull<T>) -> usize pub const unsafe fn offset_from_unsigned(self, subtracted: NonNull<T>) -> usize
where where
T: Sized, T: Sized,
@ -922,8 +922,8 @@ impl<T: ?Sized> NonNull<T> {
/// ignoring the metadata. /// ignoring the metadata.
#[inline(always)] #[inline(always)]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces #[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
#[stable(feature = "ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "ptr_sub_ptr", since = "1.87.0")]
#[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_ptr_sub_ptr", since = "1.87.0")]
pub const unsafe fn byte_offset_from_unsigned<U: ?Sized>(self, origin: NonNull<U>) -> usize { pub const unsafe fn byte_offset_from_unsigned<U: ?Sized>(self, origin: NonNull<U>) -> usize {
// SAFETY: the caller must uphold the safety contract for `byte_sub_ptr`. // SAFETY: the caller must uphold the safety contract for `byte_sub_ptr`.
unsafe { self.as_ptr().byte_offset_from_unsigned(origin.as_ptr()) } unsafe { self.as_ptr().byte_offset_from_unsigned(origin.as_ptr()) }

View file

@ -3721,7 +3721,7 @@ impl<T> [T] {
#[doc(alias = "memcpy")] #[doc(alias = "memcpy")]
#[inline] #[inline]
#[stable(feature = "copy_from_slice", since = "1.9.0")] #[stable(feature = "copy_from_slice", since = "1.9.0")]
#[rustc_const_stable(feature = "const_copy_from_slice", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_copy_from_slice", since = "1.87.0")]
#[track_caller] #[track_caller]
pub const fn copy_from_slice(&mut self, src: &[T]) pub const fn copy_from_slice(&mut self, src: &[T])
where where
@ -4331,7 +4331,7 @@ impl<T> [T] {
/// ``` /// ```
#[inline] #[inline]
#[must_use = "method does not modify the slice if the range is out of bounds"] #[must_use = "method does not modify the slice if the range is out of bounds"]
#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "slice_take", since = "1.87.0")]
pub fn split_off<'a, R: OneSidedRange<usize>>( pub fn split_off<'a, R: OneSidedRange<usize>>(
self: &mut &'a Self, self: &mut &'a Self,
range: R, range: R,
@ -4397,7 +4397,7 @@ impl<T> [T] {
/// ``` /// ```
#[inline] #[inline]
#[must_use = "method does not modify the slice if the range is out of bounds"] #[must_use = "method does not modify the slice if the range is out of bounds"]
#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "slice_take", since = "1.87.0")]
pub fn split_off_mut<'a, R: OneSidedRange<usize>>( pub fn split_off_mut<'a, R: OneSidedRange<usize>>(
self: &mut &'a mut Self, self: &mut &'a mut Self,
range: R, range: R,
@ -4434,7 +4434,7 @@ impl<T> [T] {
/// assert_eq!(first, &'a'); /// assert_eq!(first, &'a');
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "slice_take", since = "1.87.0")]
#[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")] #[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")]
pub const fn split_off_first<'a>(self: &mut &'a Self) -> Option<&'a T> { pub const fn split_off_first<'a>(self: &mut &'a Self) -> Option<&'a T> {
// FIXME(const-hack): Use `?` when available in const instead of `let-else`. // FIXME(const-hack): Use `?` when available in const instead of `let-else`.
@ -4459,7 +4459,7 @@ impl<T> [T] {
/// assert_eq!(first, &'d'); /// assert_eq!(first, &'d');
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "slice_take", since = "1.87.0")]
#[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")] #[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")]
pub const fn split_off_first_mut<'a>(self: &mut &'a mut Self) -> Option<&'a mut T> { pub const fn split_off_first_mut<'a>(self: &mut &'a mut Self) -> Option<&'a mut T> {
// FIXME(const-hack): Use `mem::take` and `?` when available in const. // FIXME(const-hack): Use `mem::take` and `?` when available in const.
@ -4484,7 +4484,7 @@ impl<T> [T] {
/// assert_eq!(last, &'c'); /// assert_eq!(last, &'c');
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "slice_take", since = "1.87.0")]
#[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")] #[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")]
pub const fn split_off_last<'a>(self: &mut &'a Self) -> Option<&'a T> { pub const fn split_off_last<'a>(self: &mut &'a Self) -> Option<&'a T> {
// FIXME(const-hack): Use `?` when available in const instead of `let-else`. // FIXME(const-hack): Use `?` when available in const instead of `let-else`.
@ -4509,7 +4509,7 @@ impl<T> [T] {
/// assert_eq!(last, &'d'); /// assert_eq!(last, &'d');
/// ``` /// ```
#[inline] #[inline]
#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "slice_take", since = "1.87.0")]
#[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")] #[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")]
pub const fn split_off_last_mut<'a>(self: &mut &'a mut Self) -> Option<&'a mut T> { pub const fn split_off_last_mut<'a>(self: &mut &'a mut Self) -> Option<&'a mut T> {
// FIXME(const-hack): Use `mem::take` and `?` when available in const. // FIXME(const-hack): Use `mem::take` and `?` when available in const.
@ -4841,7 +4841,7 @@ impl<T, const N: usize> [[T; N]] {
/// assert!(empty_slice_of_arrays.as_flattened().is_empty()); /// assert!(empty_slice_of_arrays.as_flattened().is_empty());
/// ``` /// ```
#[stable(feature = "slice_flatten", since = "1.80.0")] #[stable(feature = "slice_flatten", since = "1.80.0")]
#[rustc_const_stable(feature = "const_slice_flatten", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_slice_flatten", since = "1.87.0")]
pub const fn as_flattened(&self) -> &[T] { pub const fn as_flattened(&self) -> &[T] {
let len = if T::IS_ZST { let len = if T::IS_ZST {
self.len().checked_mul(N).expect("slice len overflow") self.len().checked_mul(N).expect("slice len overflow")
@ -4878,7 +4878,7 @@ impl<T, const N: usize> [[T; N]] {
/// assert_eq!(array, [[6, 7, 8], [9, 10, 11], [12, 13, 14]]); /// assert_eq!(array, [[6, 7, 8], [9, 10, 11], [12, 13, 14]]);
/// ``` /// ```
#[stable(feature = "slice_flatten", since = "1.80.0")] #[stable(feature = "slice_flatten", since = "1.80.0")]
#[rustc_const_stable(feature = "const_slice_flatten", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_slice_flatten", since = "1.87.0")]
pub const fn as_flattened_mut(&mut self) -> &mut [T] { pub const fn as_flattened_mut(&mut self) -> &mut [T] {
let len = if T::IS_ZST { let len = if T::IS_ZST {
self.len().checked_mul(N).expect("slice len overflow") self.len().checked_mul(N).expect("slice len overflow")

View file

@ -126,7 +126,7 @@ pub const fn from_utf8(v: &[u8]) -> Result<&str, Utf8Error> {
/// See the docs for [`Utf8Error`] for more details on the kinds of /// See the docs for [`Utf8Error`] for more details on the kinds of
/// errors that can be returned. /// errors that can be returned.
#[stable(feature = "str_mut_extras", since = "1.20.0")] #[stable(feature = "str_mut_extras", since = "1.20.0")]
#[rustc_const_stable(feature = "const_str_from_utf8", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_str_from_utf8", since = "1.87.0")]
#[rustc_diagnostic_item = "str_from_utf8_mut"] #[rustc_diagnostic_item = "str_from_utf8_mut"]
pub const fn from_utf8_mut(v: &mut [u8]) -> Result<&mut str, Utf8Error> { pub const fn from_utf8_mut(v: &mut [u8]) -> Result<&mut str, Utf8Error> {
// FIXME(const-hack): This should use `?` again, once it's `const` // FIXME(const-hack): This should use `?` again, once it's `const`

View file

@ -230,8 +230,8 @@ impl str {
/// ///
/// assert_eq!("💖", sparkle_heart); /// assert_eq!("💖", sparkle_heart);
/// ``` /// ```
#[stable(feature = "inherent_str_constructors", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "inherent_str_constructors", since = "1.87.0")]
#[rustc_const_stable(feature = "inherent_str_constructors", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "inherent_str_constructors", since = "1.87.0")]
#[rustc_diagnostic_item = "str_inherent_from_utf8"] #[rustc_diagnostic_item = "str_inherent_from_utf8"]
pub const fn from_utf8(v: &[u8]) -> Result<&str, Utf8Error> { pub const fn from_utf8(v: &[u8]) -> Result<&str, Utf8Error> {
converts::from_utf8(v) converts::from_utf8(v)
@ -263,8 +263,8 @@ impl str {
/// ``` /// ```
/// See the docs for [`Utf8Error`] for more details on the kinds of /// See the docs for [`Utf8Error`] for more details on the kinds of
/// errors that can be returned. /// errors that can be returned.
#[stable(feature = "inherent_str_constructors", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "inherent_str_constructors", since = "1.87.0")]
#[rustc_const_stable(feature = "const_str_from_utf8", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "const_str_from_utf8", since = "1.87.0")]
#[rustc_diagnostic_item = "str_inherent_from_utf8_mut"] #[rustc_diagnostic_item = "str_inherent_from_utf8_mut"]
pub const fn from_utf8_mut(v: &mut [u8]) -> Result<&mut str, Utf8Error> { pub const fn from_utf8_mut(v: &mut [u8]) -> Result<&mut str, Utf8Error> {
converts::from_utf8_mut(v) converts::from_utf8_mut(v)
@ -295,8 +295,8 @@ impl str {
/// ``` /// ```
#[inline] #[inline]
#[must_use] #[must_use]
#[stable(feature = "inherent_str_constructors", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "inherent_str_constructors", since = "1.87.0")]
#[rustc_const_stable(feature = "inherent_str_constructors", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "inherent_str_constructors", since = "1.87.0")]
#[rustc_diagnostic_item = "str_inherent_from_utf8_unchecked"] #[rustc_diagnostic_item = "str_inherent_from_utf8_unchecked"]
pub const unsafe fn from_utf8_unchecked(v: &[u8]) -> &str { pub const unsafe fn from_utf8_unchecked(v: &[u8]) -> &str {
// SAFETY: converts::from_utf8_unchecked has the same safety requirements as this function. // SAFETY: converts::from_utf8_unchecked has the same safety requirements as this function.
@ -320,8 +320,8 @@ impl str {
/// ``` /// ```
#[inline] #[inline]
#[must_use] #[must_use]
#[stable(feature = "inherent_str_constructors", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "inherent_str_constructors", since = "1.87.0")]
#[rustc_const_stable(feature = "inherent_str_constructors", since = "CURRENT_RUSTC_VERSION")] #[rustc_const_stable(feature = "inherent_str_constructors", since = "1.87.0")]
#[rustc_diagnostic_item = "str_inherent_from_utf8_unchecked_mut"] #[rustc_diagnostic_item = "str_inherent_from_utf8_unchecked_mut"]
pub const unsafe fn from_utf8_unchecked_mut(v: &mut [u8]) -> &mut str { pub const unsafe fn from_utf8_unchecked_mut(v: &mut [u8]) -> &mut str {
// SAFETY: converts::from_utf8_unchecked_mut has the same safety requirements as this function. // SAFETY: converts::from_utf8_unchecked_mut has the same safety requirements as this function.

View file

@ -683,7 +683,7 @@ impl<K, V, S> HashMap<K, V, S> {
/// ``` /// ```
#[inline] #[inline]
#[rustc_lint_query_instability] #[rustc_lint_query_instability]
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, K, V, F> pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, K, V, F>
where where
F: FnMut(&K, &mut V) -> bool, F: FnMut(&K, &mut V) -> bool,
@ -1677,7 +1677,7 @@ impl<'a, K, V> Drain<'a, K, V> {
/// ]); /// ]);
/// let iter = map.extract_if(|_k, v| *v % 2 == 0); /// let iter = map.extract_if(|_k, v| *v % 2 == 0);
/// ``` /// ```
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
#[must_use = "iterators are lazy and do nothing unless consumed"] #[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct ExtractIf<'a, K, V, F> pub struct ExtractIf<'a, K, V, F>
where where
@ -2294,7 +2294,7 @@ where
} }
} }
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
impl<K, V, F> Iterator for ExtractIf<'_, K, V, F> impl<K, V, F> Iterator for ExtractIf<'_, K, V, F>
where where
F: FnMut(&K, &mut V) -> bool, F: FnMut(&K, &mut V) -> bool,
@ -2311,10 +2311,10 @@ where
} }
} }
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
impl<K, V, F> FusedIterator for ExtractIf<'_, K, V, F> where F: FnMut(&K, &mut V) -> bool {} impl<K, V, F> FusedIterator for ExtractIf<'_, K, V, F> where F: FnMut(&K, &mut V) -> bool {}
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
impl<'a, K, V, F> fmt::Debug for ExtractIf<'a, K, V, F> impl<'a, K, V, F> fmt::Debug for ExtractIf<'a, K, V, F>
where where
F: FnMut(&K, &mut V) -> bool, F: FnMut(&K, &mut V) -> bool,

View file

@ -308,7 +308,7 @@ impl<T, S> HashSet<T, S> {
/// ``` /// ```
#[inline] #[inline]
#[rustc_lint_query_instability] #[rustc_lint_query_instability]
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, T, F> pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, T, F>
where where
F: FnMut(&T) -> bool, F: FnMut(&T) -> bool,
@ -1390,7 +1390,7 @@ pub struct Drain<'a, K: 'a> {
/// ///
/// let mut extract_ifed = a.extract_if(|v| v % 2 == 0); /// let mut extract_ifed = a.extract_if(|v| v % 2 == 0);
/// ``` /// ```
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
pub struct ExtractIf<'a, K, F> pub struct ExtractIf<'a, K, F>
where where
F: FnMut(&K) -> bool, F: FnMut(&K) -> bool,
@ -1673,7 +1673,7 @@ impl<K: fmt::Debug> fmt::Debug for Drain<'_, K> {
} }
} }
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
impl<K, F> Iterator for ExtractIf<'_, K, F> impl<K, F> Iterator for ExtractIf<'_, K, F>
where where
F: FnMut(&K) -> bool, F: FnMut(&K) -> bool,
@ -1690,10 +1690,10 @@ where
} }
} }
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
impl<K, F> FusedIterator for ExtractIf<'_, K, F> where F: FnMut(&K) -> bool {} impl<K, F> FusedIterator for ExtractIf<'_, K, F> where F: FnMut(&K) -> bool {}
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "hash_extract_if", since = "1.87.0")]
impl<'a, K, F> fmt::Debug for ExtractIf<'a, K, F> impl<'a, K, F> fmt::Debug for ExtractIf<'a, K, F>
where where
F: FnMut(&K) -> bool, F: FnMut(&K) -> bool,

View file

@ -201,5 +201,5 @@ pub use self::c_str::{CStr, CString};
#[doc(inline)] #[doc(inline)]
pub use self::os_str::{OsStr, OsString}; pub use self::os_str::{OsStr, OsString};
#[stable(feature = "os_str_display", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "os_str_display", since = "1.87.0")]
pub mod os_str; pub mod os_str;

View file

@ -1255,7 +1255,7 @@ impl OsStr {
/// let s = OsStr::new("Hello, world!"); /// let s = OsStr::new("Hello, world!");
/// println!("{}", s.display()); /// println!("{}", s.display());
/// ``` /// ```
#[stable(feature = "os_str_display", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "os_str_display", since = "1.87.0")]
#[must_use = "this does not display the `OsStr`; \ #[must_use = "this does not display the `OsStr`; \
it returns an object that can be displayed"] it returns an object that can be displayed"]
#[inline] #[inline]
@ -1612,19 +1612,19 @@ impl fmt::Debug for OsStr {
/// ///
/// [`Display`]: fmt::Display /// [`Display`]: fmt::Display
/// [`format!`]: crate::format /// [`format!`]: crate::format
#[stable(feature = "os_str_display", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "os_str_display", since = "1.87.0")]
pub struct Display<'a> { pub struct Display<'a> {
os_str: &'a OsStr, os_str: &'a OsStr,
} }
#[stable(feature = "os_str_display", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "os_str_display", since = "1.87.0")]
impl fmt::Debug for Display<'_> { impl fmt::Debug for Display<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Debug::fmt(&self.os_str, f) fmt::Debug::fmt(&self.os_str, f)
} }
} }
#[stable(feature = "os_str_display", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "os_str_display", since = "1.87.0")]
impl fmt::Display for Display<'_> { impl fmt::Display for Display<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Display::fmt(&self.os_str.inner, f) fmt::Display::fmt(&self.os_str.inner, f)

View file

@ -374,7 +374,7 @@ pub enum ErrorKind {
/// A filename was invalid. /// A filename was invalid.
/// ///
/// This error can also occur if a length limit for a name was exceeded. /// This error can also occur if a length limit for a name was exceeded.
#[stable(feature = "io_error_invalid_filename", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "io_error_invalid_filename", since = "1.87.0")]
InvalidFilename, InvalidFilename,
/// Program argument list too long. /// Program argument list too long.
/// ///

View file

@ -310,7 +310,7 @@ pub use self::error::RawOsError;
pub use self::error::SimpleMessage; pub use self::error::SimpleMessage;
#[unstable(feature = "io_const_error", issue = "133448")] #[unstable(feature = "io_const_error", issue = "133448")]
pub use self::error::const_error; pub use self::error::const_error;
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
pub use self::pipe::{PipeReader, PipeWriter, pipe}; pub use self::pipe::{PipeReader, PipeWriter, pipe};
#[stable(feature = "is_terminal", since = "1.70.0")] #[stable(feature = "is_terminal", since = "1.70.0")]
pub use self::stdio::IsTerminal; pub use self::stdio::IsTerminal;

View file

@ -67,19 +67,19 @@ use crate::sys_common::{FromInner, IntoInner};
/// ``` /// ```
/// [changes]: io#platform-specific-behavior /// [changes]: io#platform-specific-behavior
/// [man page]: https://man7.org/linux/man-pages/man7/pipe.7.html /// [man page]: https://man7.org/linux/man-pages/man7/pipe.7.html
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[inline] #[inline]
pub fn pipe() -> io::Result<(PipeReader, PipeWriter)> { pub fn pipe() -> io::Result<(PipeReader, PipeWriter)> {
pipe_inner().map(|(reader, writer)| (PipeReader(reader), PipeWriter(writer))) pipe_inner().map(|(reader, writer)| (PipeReader(reader), PipeWriter(writer)))
} }
/// Read end of an anonymous pipe. /// Read end of an anonymous pipe.
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[derive(Debug)] #[derive(Debug)]
pub struct PipeReader(pub(crate) AnonPipe); pub struct PipeReader(pub(crate) AnonPipe);
/// Write end of an anonymous pipe. /// Write end of an anonymous pipe.
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[derive(Debug)] #[derive(Debug)]
pub struct PipeWriter(pub(crate) AnonPipe); pub struct PipeWriter(pub(crate) AnonPipe);
@ -160,7 +160,7 @@ impl PipeReader {
/// # Ok(()) /// # Ok(())
/// # } /// # }
/// ``` /// ```
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
pub fn try_clone(&self) -> io::Result<Self> { pub fn try_clone(&self) -> io::Result<Self> {
self.0.try_clone().map(Self) self.0.try_clone().map(Self)
} }
@ -199,13 +199,13 @@ impl PipeWriter {
/// # Ok(()) /// # Ok(())
/// # } /// # }
/// ``` /// ```
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
pub fn try_clone(&self) -> io::Result<Self> { pub fn try_clone(&self) -> io::Result<Self> {
self.0.try_clone().map(Self) self.0.try_clone().map(Self)
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl io::Read for &PipeReader { impl io::Read for &PipeReader {
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
self.0.read(buf) self.0.read(buf)
@ -225,7 +225,7 @@ impl io::Read for &PipeReader {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl io::Read for PipeReader { impl io::Read for PipeReader {
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
self.0.read(buf) self.0.read(buf)
@ -245,7 +245,7 @@ impl io::Read for PipeReader {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl io::Write for &PipeWriter { impl io::Write for &PipeWriter {
fn write(&mut self, buf: &[u8]) -> io::Result<usize> { fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
self.0.write(buf) self.0.write(buf)
@ -263,7 +263,7 @@ impl io::Write for &PipeWriter {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl io::Write for PipeWriter { impl io::Write for PipeWriter {
fn write(&mut self, buf: &[u8]) -> io::Result<usize> { fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
self.0.write(buf) self.0.write(buf)

View file

@ -505,7 +505,7 @@ impl<'a> AsFd for io::StderrLock<'a> {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl AsFd for io::PipeReader { impl AsFd for io::PipeReader {
fn as_fd(&self) -> BorrowedFd<'_> { fn as_fd(&self) -> BorrowedFd<'_> {
@ -513,7 +513,7 @@ impl AsFd for io::PipeReader {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl From<io::PipeReader> for OwnedFd { impl From<io::PipeReader> for OwnedFd {
fn from(pipe: io::PipeReader) -> Self { fn from(pipe: io::PipeReader) -> Self {
@ -521,7 +521,7 @@ impl From<io::PipeReader> for OwnedFd {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl AsFd for io::PipeWriter { impl AsFd for io::PipeWriter {
fn as_fd(&self) -> BorrowedFd<'_> { fn as_fd(&self) -> BorrowedFd<'_> {
@ -529,7 +529,7 @@ impl AsFd for io::PipeWriter {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl From<io::PipeWriter> for OwnedFd { impl From<io::PipeWriter> for OwnedFd {
fn from(pipe: io::PipeWriter) -> Self { fn from(pipe: io::PipeWriter) -> Self {
@ -537,7 +537,7 @@ impl From<io::PipeWriter> for OwnedFd {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl From<OwnedFd> for io::PipeReader { impl From<OwnedFd> for io::PipeReader {
fn from(owned_fd: OwnedFd) -> Self { fn from(owned_fd: OwnedFd) -> Self {
@ -545,7 +545,7 @@ impl From<OwnedFd> for io::PipeReader {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl From<OwnedFd> for io::PipeWriter { impl From<OwnedFd> for io::PipeWriter {
fn from(owned_fd: OwnedFd) -> Self { fn from(owned_fd: OwnedFd) -> Self {

View file

@ -285,7 +285,7 @@ impl<T: AsRawFd> AsRawFd for Box<T> {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl AsRawFd for io::PipeReader { impl AsRawFd for io::PipeReader {
fn as_raw_fd(&self) -> RawFd { fn as_raw_fd(&self) -> RawFd {
@ -293,7 +293,7 @@ impl AsRawFd for io::PipeReader {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl FromRawFd for io::PipeReader { impl FromRawFd for io::PipeReader {
unsafe fn from_raw_fd(raw_fd: RawFd) -> Self { unsafe fn from_raw_fd(raw_fd: RawFd) -> Self {
@ -301,7 +301,7 @@ impl FromRawFd for io::PipeReader {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl IntoRawFd for io::PipeReader { impl IntoRawFd for io::PipeReader {
fn into_raw_fd(self) -> RawFd { fn into_raw_fd(self) -> RawFd {
@ -309,7 +309,7 @@ impl IntoRawFd for io::PipeReader {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl AsRawFd for io::PipeWriter { impl AsRawFd for io::PipeWriter {
fn as_raw_fd(&self) -> RawFd { fn as_raw_fd(&self) -> RawFd {
@ -317,7 +317,7 @@ impl AsRawFd for io::PipeWriter {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl FromRawFd for io::PipeWriter { impl FromRawFd for io::PipeWriter {
unsafe fn from_raw_fd(raw_fd: RawFd) -> Self { unsafe fn from_raw_fd(raw_fd: RawFd) -> Self {
@ -325,7 +325,7 @@ impl FromRawFd for io::PipeWriter {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
#[cfg(not(target_os = "trusty"))] #[cfg(not(target_os = "trusty"))]
impl IntoRawFd for io::PipeWriter { impl IntoRawFd for io::PipeWriter {
fn into_raw_fd(self) -> RawFd { fn into_raw_fd(self) -> RawFd {

View file

@ -661,42 +661,42 @@ impl<T> From<crate::thread::JoinHandle<T>> for OwnedHandle {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl AsHandle for io::PipeReader { impl AsHandle for io::PipeReader {
fn as_handle(&self) -> BorrowedHandle<'_> { fn as_handle(&self) -> BorrowedHandle<'_> {
self.0.as_handle() self.0.as_handle()
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl From<io::PipeReader> for OwnedHandle { impl From<io::PipeReader> for OwnedHandle {
fn from(pipe: io::PipeReader) -> Self { fn from(pipe: io::PipeReader) -> Self {
pipe.into_inner().into_inner() pipe.into_inner().into_inner()
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl AsHandle for io::PipeWriter { impl AsHandle for io::PipeWriter {
fn as_handle(&self) -> BorrowedHandle<'_> { fn as_handle(&self) -> BorrowedHandle<'_> {
self.0.as_handle() self.0.as_handle()
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl From<io::PipeWriter> for OwnedHandle { impl From<io::PipeWriter> for OwnedHandle {
fn from(pipe: io::PipeWriter) -> Self { fn from(pipe: io::PipeWriter) -> Self {
pipe.into_inner().into_inner() pipe.into_inner().into_inner()
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl From<OwnedHandle> for io::PipeReader { impl From<OwnedHandle> for io::PipeReader {
fn from(owned_handle: OwnedHandle) -> Self { fn from(owned_handle: OwnedHandle) -> Self {
Self::from_inner(FromInner::from_inner(owned_handle)) Self::from_inner(FromInner::from_inner(owned_handle))
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl From<OwnedHandle> for io::PipeWriter { impl From<OwnedHandle> for io::PipeWriter {
fn from(owned_handle: OwnedHandle) -> Self { fn from(owned_handle: OwnedHandle) -> Self {
Self::from_inner(FromInner::from_inner(owned_handle)) Self::from_inner(FromInner::from_inner(owned_handle))

View file

@ -311,42 +311,42 @@ impl IntoRawSocket for net::UdpSocket {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl AsRawHandle for io::PipeReader { impl AsRawHandle for io::PipeReader {
fn as_raw_handle(&self) -> RawHandle { fn as_raw_handle(&self) -> RawHandle {
self.0.as_raw_handle() self.0.as_raw_handle()
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl FromRawHandle for io::PipeReader { impl FromRawHandle for io::PipeReader {
unsafe fn from_raw_handle(raw_handle: RawHandle) -> Self { unsafe fn from_raw_handle(raw_handle: RawHandle) -> Self {
unsafe { Self::from_inner(FromRawHandle::from_raw_handle(raw_handle)) } unsafe { Self::from_inner(FromRawHandle::from_raw_handle(raw_handle)) }
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl IntoRawHandle for io::PipeReader { impl IntoRawHandle for io::PipeReader {
fn into_raw_handle(self) -> RawHandle { fn into_raw_handle(self) -> RawHandle {
self.0.into_raw_handle() self.0.into_raw_handle()
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl AsRawHandle for io::PipeWriter { impl AsRawHandle for io::PipeWriter {
fn as_raw_handle(&self) -> RawHandle { fn as_raw_handle(&self) -> RawHandle {
self.0.as_raw_handle() self.0.as_raw_handle()
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl FromRawHandle for io::PipeWriter { impl FromRawHandle for io::PipeWriter {
unsafe fn from_raw_handle(raw_handle: RawHandle) -> Self { unsafe fn from_raw_handle(raw_handle: RawHandle) -> Self {
unsafe { Self::from_inner(FromRawHandle::from_raw_handle(raw_handle)) } unsafe { Self::from_inner(FromRawHandle::from_raw_handle(raw_handle)) }
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl IntoRawHandle for io::PipeWriter { impl IntoRawHandle for io::PipeWriter {
fn into_raw_handle(self) -> RawHandle { fn into_raw_handle(self) -> RawHandle {
self.0.into_raw_handle() self.0.into_raw_handle()

View file

@ -1659,14 +1659,14 @@ impl From<io::Stderr> for Stdio {
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl From<io::PipeWriter> for Stdio { impl From<io::PipeWriter> for Stdio {
fn from(pipe: io::PipeWriter) -> Self { fn from(pipe: io::PipeWriter) -> Self {
Stdio::from_inner(pipe.into_inner().into()) Stdio::from_inner(pipe.into_inner().into())
} }
} }
#[stable(feature = "anonymous_pipe", since = "CURRENT_RUSTC_VERSION")] #[stable(feature = "anonymous_pipe", since = "1.87.0")]
impl From<io::PipeReader> for Stdio { impl From<io::PipeReader> for Stdio {
fn from(pipe: io::PipeReader) -> Self { fn from(pipe: io::PipeReader) -> Self {
Stdio::from_inner(pipe.into_inner().into()) Stdio::from_inner(pipe.into_inner().into())