Auto merge of #137571 - tgross35:rollup-i1tcnv1, r=tgross35
Rollup of 8 pull requests Successful merges: - #134655 (Stabilize `hash_extract_if`) - #135933 (Explain how Vec::with_capacity is faithful) - #136668 (Stabilize `core::str::from_utf8_mut` as `const`) - #136775 (Update `String::from_raw_parts` safety requirements) - #137109 (stabilize extract_if) - #137349 (Implement `read_buf` for zkVM stdin) - #137493 (configure.py: don't instruct user to run nonexistent program) - #137516 (remove some unnecessary rustc_const_unstable) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
ad27045c31
20 changed files with 51 additions and 57 deletions
|
@ -656,7 +656,6 @@ impl<K, V, S> HashMap<K, V, S> {
|
|||
/// Splitting a map into even and odd keys, reusing the original map:
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(hash_extract_if)]
|
||||
/// use std::collections::HashMap;
|
||||
///
|
||||
/// let mut map: HashMap<i32, i32> = (0..8).map(|x| (x, x)).collect();
|
||||
|
@ -672,7 +671,7 @@ impl<K, V, S> HashMap<K, V, S> {
|
|||
/// ```
|
||||
#[inline]
|
||||
#[rustc_lint_query_instability]
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, K, V, F>
|
||||
where
|
||||
F: FnMut(&K, &mut V) -> bool,
|
||||
|
@ -1722,8 +1721,6 @@ impl<'a, K, V> Drain<'a, K, V> {
|
|||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(hash_extract_if)]
|
||||
///
|
||||
/// use std::collections::HashMap;
|
||||
///
|
||||
/// let mut map = HashMap::from([
|
||||
|
@ -1731,7 +1728,7 @@ impl<'a, K, V> Drain<'a, K, V> {
|
|||
/// ]);
|
||||
/// let iter = map.extract_if(|_k, v| *v % 2 == 0);
|
||||
/// ```
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[must_use = "iterators are lazy and do nothing unless consumed"]
|
||||
pub struct ExtractIf<'a, K, V, F>
|
||||
where
|
||||
|
@ -2746,7 +2743,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V, F> Iterator for ExtractIf<'_, K, V, F>
|
||||
where
|
||||
F: FnMut(&K, &mut V) -> bool,
|
||||
|
@ -2763,10 +2760,10 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, V, F> FusedIterator for ExtractIf<'_, K, V, F> where F: FnMut(&K, &mut V) -> bool {}
|
||||
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<'a, K, V, F> fmt::Debug for ExtractIf<'a, K, V, F>
|
||||
where
|
||||
F: FnMut(&K, &mut V) -> bool,
|
||||
|
|
|
@ -293,7 +293,6 @@ impl<T, S> HashSet<T, S> {
|
|||
/// Splitting a set into even and odd values, reusing the original set:
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(hash_extract_if)]
|
||||
/// use std::collections::HashSet;
|
||||
///
|
||||
/// let mut set: HashSet<i32> = (0..8).collect();
|
||||
|
@ -309,7 +308,7 @@ impl<T, S> HashSet<T, S> {
|
|||
/// ```
|
||||
#[inline]
|
||||
#[rustc_lint_query_instability]
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, T, F>
|
||||
where
|
||||
F: FnMut(&T) -> bool,
|
||||
|
@ -1385,15 +1384,13 @@ pub struct Drain<'a, K: 'a> {
|
|||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(hash_extract_if)]
|
||||
///
|
||||
/// use std::collections::HashSet;
|
||||
///
|
||||
/// let mut a = HashSet::from([1, 2, 3]);
|
||||
///
|
||||
/// let mut extract_ifed = a.extract_if(|v| v % 2 == 0);
|
||||
/// ```
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub struct ExtractIf<'a, K, F>
|
||||
where
|
||||
F: FnMut(&K) -> bool,
|
||||
|
@ -1676,7 +1673,7 @@ impl<K: fmt::Debug> fmt::Debug for Drain<'_, K> {
|
|||
}
|
||||
}
|
||||
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, F> Iterator for ExtractIf<'_, K, F>
|
||||
where
|
||||
F: FnMut(&K) -> bool,
|
||||
|
@ -1693,10 +1690,10 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<K, F> FusedIterator for ExtractIf<'_, K, F> where F: FnMut(&K) -> bool {}
|
||||
|
||||
#[unstable(feature = "hash_extract_if", issue = "59618")]
|
||||
#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<'a, K, F> fmt::Debug for ExtractIf<'a, K, F>
|
||||
where
|
||||
F: FnMut(&K) -> bool,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use super::abi;
|
||||
use super::abi::fileno;
|
||||
use crate::io;
|
||||
use crate::io::{self, BorrowedCursor};
|
||||
|
||||
pub struct Stdin;
|
||||
pub struct Stdout;
|
||||
|
@ -16,6 +16,14 @@ impl io::Read for Stdin {
|
|||
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
|
||||
Ok(unsafe { abi::sys_read(fileno::STDIN, buf.as_mut_ptr(), buf.len()) })
|
||||
}
|
||||
|
||||
fn read_buf(&mut self, mut buf: BorrowedCursor<'_>) -> io::Result<()> {
|
||||
unsafe {
|
||||
let n = abi::sys_read(fileno::STDIN, buf.as_mut().as_mut_ptr().cast(), buf.capacity());
|
||||
buf.advance_unchecked(n);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl Stdout {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue