mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Rollup merge of #88481 - bjorn3:remove_feature_gates, r=cjgillot
Remove some feature gates The first commit removes various feature gates that are unused. The second commit replaces some `Fn` implementations with `Iterator` implementations, which is much cleaner IMO. The third commit replaces an unboxed_closures feature gate with min_specialization. For some reason the unboxed_closures feature gate suppresses the min_specialization feature gate from triggering on an `TrustedStep` impl. The last comment just turns a regular comment into a doc comment as drive by cleanup. I can move it to a separate PR if preferred.
This commit is contained in:
commit
5215b855b0
@ -144,7 +144,7 @@ impl<R> MemberConstraintSet<'tcx, R>
|
||||
where
|
||||
R: Copy + Hash + Eq,
|
||||
{
|
||||
crate fn all_indices(&self) -> impl Iterator<Item = NllMemberConstraintIndex> {
|
||||
crate fn all_indices(&self) -> impl Iterator<Item = NllMemberConstraintIndex> + '_ {
|
||||
self.constraints.indices()
|
||||
}
|
||||
|
||||
|
@ -497,7 +497,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
|
||||
}
|
||||
|
||||
/// Returns an iterator over all the region indices.
|
||||
pub fn regions(&self) -> impl Iterator<Item = RegionVid> {
|
||||
pub fn regions(&self) -> impl Iterator<Item = RegionVid> + '_ {
|
||||
self.definitions.indices()
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,6 @@
|
||||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
||||
#![feature(allow_internal_unstable)]
|
||||
#![feature(array_windows)]
|
||||
#![feature(associated_type_bounds)]
|
||||
#![feature(auto_traits)]
|
||||
|
@ -2,9 +2,8 @@
|
||||
#![feature(bench_black_box)]
|
||||
#![feature(extend_one)]
|
||||
#![feature(iter_zip)]
|
||||
#![feature(unboxed_closures)]
|
||||
#![feature(min_specialization)]
|
||||
#![feature(test)]
|
||||
#![feature(fn_traits)]
|
||||
|
||||
pub mod bit_set;
|
||||
pub mod vec;
|
||||
|
@ -3,9 +3,9 @@ use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
|
||||
use std::fmt;
|
||||
use std::fmt::Debug;
|
||||
use std::hash::Hash;
|
||||
use std::iter::{self, FromIterator};
|
||||
use std::iter::FromIterator;
|
||||
use std::marker::PhantomData;
|
||||
use std::ops::{Index, IndexMut, Range, RangeBounds};
|
||||
use std::ops::{Index, IndexMut, RangeBounds};
|
||||
use std::slice;
|
||||
use std::vec;
|
||||
|
||||
@ -518,8 +518,6 @@ impl<I: Idx, T: fmt::Debug> fmt::Debug for IndexVec<I, T> {
|
||||
}
|
||||
}
|
||||
|
||||
pub type Enumerated<I, J> = iter::Map<iter::Enumerate<J>, IntoIdx<I>>;
|
||||
|
||||
impl<I: Idx, T> IndexVec<I, T> {
|
||||
#[inline]
|
||||
pub fn new() -> Self {
|
||||
@ -596,8 +594,10 @@ impl<I: Idx, T> IndexVec<I, T> {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn into_iter_enumerated(self) -> Enumerated<I, vec::IntoIter<T>> {
|
||||
self.raw.into_iter().enumerate().map(IntoIdx { _marker: PhantomData })
|
||||
pub fn into_iter_enumerated(
|
||||
self,
|
||||
) -> impl DoubleEndedIterator<Item = (I, T)> + ExactSizeIterator {
|
||||
self.raw.into_iter().enumerate().map(|(n, t)| (I::new(n), t))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
@ -606,13 +606,15 @@ impl<I: Idx, T> IndexVec<I, T> {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn iter_enumerated(&self) -> Enumerated<I, slice::Iter<'_, T>> {
|
||||
self.raw.iter().enumerate().map(IntoIdx { _marker: PhantomData })
|
||||
pub fn iter_enumerated(
|
||||
&self,
|
||||
) -> impl DoubleEndedIterator<Item = (I, &T)> + ExactSizeIterator + '_ {
|
||||
self.raw.iter().enumerate().map(|(n, t)| (I::new(n), t))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn indices(&self) -> iter::Map<Range<usize>, IntoIdx<I>> {
|
||||
(0..self.len()).map(IntoIdx { _marker: PhantomData })
|
||||
pub fn indices(&self) -> impl DoubleEndedIterator<Item = I> + ExactSizeIterator + 'static {
|
||||
(0..self.len()).map(|n| I::new(n))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
@ -621,8 +623,10 @@ impl<I: Idx, T> IndexVec<I, T> {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn iter_enumerated_mut(&mut self) -> Enumerated<I, slice::IterMut<'_, T>> {
|
||||
self.raw.iter_mut().enumerate().map(IntoIdx { _marker: PhantomData })
|
||||
pub fn iter_enumerated_mut(
|
||||
&mut self,
|
||||
) -> impl DoubleEndedIterator<Item = (I, &mut T)> + ExactSizeIterator + '_ {
|
||||
self.raw.iter_mut().enumerate().map(|(n, t)| (I::new(n), t))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
@ -638,7 +642,7 @@ impl<I: Idx, T> IndexVec<I, T> {
|
||||
&'a mut self,
|
||||
range: R,
|
||||
) -> impl Iterator<Item = (I, T)> + 'a {
|
||||
self.raw.drain(range).enumerate().map(IntoIdx { _marker: PhantomData })
|
||||
self.raw.drain(range).enumerate().map(|(n, t)| (I::new(n), t))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
@ -832,36 +836,5 @@ impl<'a, I: Idx, T> IntoIterator for &'a mut IndexVec<I, T> {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct IntoIdx<I: Idx> {
|
||||
_marker: PhantomData<fn(&I)>,
|
||||
}
|
||||
impl<I: Idx, T> FnOnce<((usize, T),)> for IntoIdx<I> {
|
||||
type Output = (I, T);
|
||||
|
||||
extern "rust-call" fn call_once(self, ((n, t),): ((usize, T),)) -> Self::Output {
|
||||
(I::new(n), t)
|
||||
}
|
||||
}
|
||||
|
||||
impl<I: Idx, T> FnMut<((usize, T),)> for IntoIdx<I> {
|
||||
extern "rust-call" fn call_mut(&mut self, ((n, t),): ((usize, T),)) -> Self::Output {
|
||||
(I::new(n), t)
|
||||
}
|
||||
}
|
||||
|
||||
impl<I: Idx> FnOnce<(usize,)> for IntoIdx<I> {
|
||||
type Output = I;
|
||||
|
||||
extern "rust-call" fn call_once(self, (n,): (usize,)) -> Self::Output {
|
||||
I::new(n)
|
||||
}
|
||||
}
|
||||
|
||||
impl<I: Idx> FnMut<(usize,)> for IntoIdx<I> {
|
||||
extern "rust-call" fn call_mut(&mut self, (n,): (usize,)) -> Self::Output {
|
||||
I::new(n)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
@ -26,7 +26,6 @@
|
||||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
||||
#![cfg_attr(test, feature(test))]
|
||||
#![feature(array_windows)]
|
||||
#![feature(bool_to_option)]
|
||||
#![feature(box_patterns)]
|
||||
|
@ -41,13 +41,11 @@
|
||||
#![feature(once_cell)]
|
||||
#![feature(min_specialization)]
|
||||
#![feature(trusted_len)]
|
||||
#![feature(test)]
|
||||
#![feature(in_band_lifetimes)]
|
||||
#![feature(crate_visibility_modifier)]
|
||||
#![feature(associated_type_bounds)]
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(half_open_range_patterns)]
|
||||
#![feature(exclusive_range_pattern)]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(associated_type_defaults)]
|
||||
#![feature(iter_zip)]
|
||||
|
@ -1,10 +1,10 @@
|
||||
// This module contains some shared code for encoding and decoding various
|
||||
// things from the `ty` module, and in particular implements support for
|
||||
// "shorthands" which allow to have pointers back into the already encoded
|
||||
// stream instead of re-encoding the same thing twice.
|
||||
//
|
||||
// The functionality in here is shared between persisting to crate metadata and
|
||||
// persisting to incr. comp. caches.
|
||||
//! This module contains some shared code for encoding and decoding various
|
||||
//! things from the `ty` module, and in particular implements support for
|
||||
//! "shorthands" which allow to have pointers back into the already encoded
|
||||
//! stream instead of re-encoding the same thing twice.
|
||||
//!
|
||||
//! The functionality in here is shared between persisting to crate metadata and
|
||||
//! persisting to incr. comp. caches.
|
||||
|
||||
use crate::arena::ArenaAllocatable;
|
||||
use crate::infer::canonical::{CanonicalVarInfo, CanonicalVarInfos};
|
||||
|
@ -1,6 +1,5 @@
|
||||
use core::slice::Iter;
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_index::vec::{Enumerated, IndexVec};
|
||||
use rustc_index::vec::IndexVec;
|
||||
use rustc_middle::mir::*;
|
||||
use rustc_middle::ty::{ParamEnv, Ty, TyCtxt};
|
||||
use rustc_span::Span;
|
||||
@ -337,7 +336,9 @@ impl MovePathLookup {
|
||||
|
||||
/// An enumerated iterator of `local`s and their associated
|
||||
/// `MovePathIndex`es.
|
||||
pub fn iter_locals_enumerated(&self) -> Enumerated<Local, Iter<'_, MovePathIndex>> {
|
||||
pub fn iter_locals_enumerated(
|
||||
&self,
|
||||
) -> impl DoubleEndedIterator<Item = (Local, &MovePathIndex)> + ExactSizeIterator {
|
||||
self.locals.iter_enumerated()
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,6 @@
|
||||
#![feature(exhaustive_patterns)]
|
||||
#![feature(min_specialization)]
|
||||
#![feature(step_trait)]
|
||||
#![feature(unchecked_math)]
|
||||
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
|
@ -6,8 +6,6 @@
|
||||
|
||||
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
||||
#![feature(control_flow_enum)]
|
||||
#![feature(half_open_range_patterns)]
|
||||
#![feature(exclusive_range_pattern)]
|
||||
#![feature(nll)]
|
||||
#![recursion_limit = "256"]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user