Auto merge of #92070 - rukai:replace_vec_into_iter_with_array_into_iter, r=Mark-Simulacrum
Replace usages of vec![].into_iter with [].into_iter `[].into_iter` is idiomatic over `vec![].into_iter` because its simpler and faster (unless the vec is optimized away in which case it would be the same) So we should change all the implementation, documentation and tests to use it. I skipped: * `src/tools` - Those are copied in from upstream * `src/test/ui` - Hard to tell if `vec![].into_iter` was used intentionally or not here and not much benefit to changing it. * any case where `vec![].into_iter` was used because we specifically needed a `Vec::IntoIter<T>` * any case where it looked like we were intentionally using `vec![].into_iter` to test it.
This commit is contained in:
commit
2e2c86eba2
36 changed files with 116 additions and 122 deletions
|
@ -791,7 +791,7 @@ fn get_rust_try_fn<'ll, 'tcx>(
|
||||||
)));
|
)));
|
||||||
// `unsafe fn(unsafe fn(*mut i8) -> (), *mut i8, unsafe fn(*mut i8, *mut i8) -> ()) -> i32`
|
// `unsafe fn(unsafe fn(*mut i8) -> (), *mut i8, unsafe fn(*mut i8, *mut i8) -> ()) -> i32`
|
||||||
let rust_fn_sig = ty::Binder::dummy(cx.tcx.mk_fn_sig(
|
let rust_fn_sig = ty::Binder::dummy(cx.tcx.mk_fn_sig(
|
||||||
vec![try_fn_ty, i8p, catch_fn_ty].into_iter(),
|
[try_fn_ty, i8p, catch_fn_ty].into_iter(),
|
||||||
tcx.types.i32,
|
tcx.types.i32,
|
||||||
false,
|
false,
|
||||||
hir::Unsafety::Unsafe,
|
hir::Unsafety::Unsafe,
|
||||||
|
|
|
@ -10,8 +10,8 @@ impl<T> ThinVec<T> {
|
||||||
fn test_from_iterator() {
|
fn test_from_iterator() {
|
||||||
assert_eq!(std::iter::empty().collect::<ThinVec<String>>().into_vec(), Vec::<String>::new());
|
assert_eq!(std::iter::empty().collect::<ThinVec<String>>().into_vec(), Vec::<String>::new());
|
||||||
assert_eq!(std::iter::once(42).collect::<ThinVec<_>>().into_vec(), vec![42]);
|
assert_eq!(std::iter::once(42).collect::<ThinVec<_>>().into_vec(), vec![42]);
|
||||||
assert_eq!(vec![1, 2].into_iter().collect::<ThinVec<_>>().into_vec(), vec![1, 2]);
|
assert_eq!([1, 2].into_iter().collect::<ThinVec<_>>().into_vec(), vec![1, 2]);
|
||||||
assert_eq!(vec![1, 2, 3].into_iter().collect::<ThinVec<_>>().into_vec(), vec![1, 2, 3]);
|
assert_eq!([1, 2, 3].into_iter().collect::<ThinVec<_>>().into_vec(), vec![1, 2, 3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -14,7 +14,7 @@ fn test_from_iterator() {
|
||||||
);
|
);
|
||||||
assert_eq!(std::iter::once((42, true)).collect::<VecMap<_, _>>().into_vec(), vec![(42, true)]);
|
assert_eq!(std::iter::once((42, true)).collect::<VecMap<_, _>>().into_vec(), vec![(42, true)]);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
vec![(1, true), (2, false)].into_iter().collect::<VecMap<_, _>>().into_vec(),
|
[(1, true), (2, false)].into_iter().collect::<VecMap<_, _>>().into_vec(),
|
||||||
vec![(1, true), (2, false)]
|
vec![(1, true), (2, false)]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ fn test_insert() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_get() {
|
fn test_get() {
|
||||||
let v = vec![(1, true), (2, false)].into_iter().collect::<VecMap<_, _>>();
|
let v = [(1, true), (2, false)].into_iter().collect::<VecMap<_, _>>();
|
||||||
assert_eq!(v.get(&1), Some(&true));
|
assert_eq!(v.get(&1), Some(&true));
|
||||||
assert_eq!(v.get(&2), Some(&false));
|
assert_eq!(v.get(&2), Some(&false));
|
||||||
assert_eq!(v.get(&3), None);
|
assert_eq!(v.get(&3), None);
|
||||||
|
|
|
@ -455,7 +455,7 @@ impl DiagnosticSpan {
|
||||||
let backtrace_step = backtrace.next().map(|bt| {
|
let backtrace_step = backtrace.next().map(|bt| {
|
||||||
let call_site = Self::from_span_full(bt.call_site, false, None, None, backtrace, je);
|
let call_site = Self::from_span_full(bt.call_site, false, None, None, backtrace, je);
|
||||||
let def_site_span =
|
let def_site_span =
|
||||||
Self::from_span_full(bt.def_site, false, None, None, vec![].into_iter(), je);
|
Self::from_span_full(bt.def_site, false, None, None, [].into_iter(), je);
|
||||||
Box::new(DiagnosticSpanMacroExpansion {
|
Box::new(DiagnosticSpanMacroExpansion {
|
||||||
span: call_site,
|
span: call_site,
|
||||||
macro_decl_name: bt.kind.descr(),
|
macro_decl_name: bt.kind.descr(),
|
||||||
|
|
|
@ -158,7 +158,7 @@ impl FromInternal<(TreeAndSpacing, &'_ mut Vec<Self>, &mut Rustc<'_, '_>)>
|
||||||
for ch in data.as_str().chars() {
|
for ch in data.as_str().chars() {
|
||||||
escaped.extend(ch.escape_debug());
|
escaped.extend(ch.escape_debug());
|
||||||
}
|
}
|
||||||
let stream = vec![
|
let stream = [
|
||||||
Ident(sym::doc, false),
|
Ident(sym::doc, false),
|
||||||
Eq,
|
Eq,
|
||||||
TokenKind::lit(token::Str, Symbol::intern(&escaped), None),
|
TokenKind::lit(token::Str, Symbol::intern(&escaped), None),
|
||||||
|
@ -221,7 +221,7 @@ impl ToInternal<TokenStream> for TokenTree<Group, Punct, Ident, Literal> {
|
||||||
let integer = TokenKind::lit(token::Integer, symbol, suffix);
|
let integer = TokenKind::lit(token::Integer, symbol, suffix);
|
||||||
let a = tokenstream::TokenTree::token(minus, span);
|
let a = tokenstream::TokenTree::token(minus, span);
|
||||||
let b = tokenstream::TokenTree::token(integer, span);
|
let b = tokenstream::TokenTree::token(integer, span);
|
||||||
return vec![a, b].into_iter().collect();
|
return [a, b].into_iter().collect();
|
||||||
}
|
}
|
||||||
TokenTree::Literal(self::Literal {
|
TokenTree::Literal(self::Literal {
|
||||||
lit: token::Lit { kind: token::Float, symbol, suffix },
|
lit: token::Lit { kind: token::Float, symbol, suffix },
|
||||||
|
@ -232,7 +232,7 @@ impl ToInternal<TokenStream> for TokenTree<Group, Punct, Ident, Literal> {
|
||||||
let float = TokenKind::lit(token::Float, symbol, suffix);
|
let float = TokenKind::lit(token::Float, symbol, suffix);
|
||||||
let a = tokenstream::TokenTree::token(minus, span);
|
let a = tokenstream::TokenTree::token(minus, span);
|
||||||
let b = tokenstream::TokenTree::token(float, span);
|
let b = tokenstream::TokenTree::token(float, span);
|
||||||
return vec![a, b].into_iter().collect();
|
return [a, b].into_iter().collect();
|
||||||
}
|
}
|
||||||
TokenTree::Literal(self::Literal { lit, span }) => {
|
TokenTree::Literal(self::Literal { lit, span }) => {
|
||||||
return tokenstream::TokenTree::token(Literal(lit), span).into();
|
return tokenstream::TokenTree::token(Literal(lit), span).into();
|
||||||
|
|
|
@ -56,7 +56,7 @@ impl NodeLabels<&'static str> {
|
||||||
match self {
|
match self {
|
||||||
UnlabelledNodes(len) => vec![None; len],
|
UnlabelledNodes(len) => vec![None; len],
|
||||||
AllNodesLabelled(lbls) => lbls.into_iter().map(Some).collect(),
|
AllNodesLabelled(lbls) => lbls.into_iter().map(Some).collect(),
|
||||||
SomeNodesLabelled(lbls) => lbls.into_iter().collect(),
|
SomeNodesLabelled(lbls) => lbls,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ fn test_all_except_most_recent() {
|
||||||
.keys()
|
.keys()
|
||||||
.cloned()
|
.cloned()
|
||||||
.collect::<FxHashSet<PathBuf>>(),
|
.collect::<FxHashSet<PathBuf>>(),
|
||||||
vec![PathBuf::from("1"), PathBuf::from("2"), PathBuf::from("3"), PathBuf::from("4"),]
|
[PathBuf::from("1"), PathBuf::from("2"), PathBuf::from("3"), PathBuf::from("4"),]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect::<FxHashSet<PathBuf>>()
|
.collect::<FxHashSet<PathBuf>>()
|
||||||
);
|
);
|
||||||
|
@ -40,7 +40,7 @@ fn test_find_source_directory_in_iter() {
|
||||||
// Find newest
|
// Find newest
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
find_source_directory_in_iter(
|
find_source_directory_in_iter(
|
||||||
vec![
|
[
|
||||||
PathBuf::from("crate-dir/s-3234-0000-svh"),
|
PathBuf::from("crate-dir/s-3234-0000-svh"),
|
||||||
PathBuf::from("crate-dir/s-2234-0000-svh"),
|
PathBuf::from("crate-dir/s-2234-0000-svh"),
|
||||||
PathBuf::from("crate-dir/s-1234-0000-svh")
|
PathBuf::from("crate-dir/s-1234-0000-svh")
|
||||||
|
@ -54,7 +54,7 @@ fn test_find_source_directory_in_iter() {
|
||||||
// Filter out "-working"
|
// Filter out "-working"
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
find_source_directory_in_iter(
|
find_source_directory_in_iter(
|
||||||
vec![
|
[
|
||||||
PathBuf::from("crate-dir/s-3234-0000-working"),
|
PathBuf::from("crate-dir/s-3234-0000-working"),
|
||||||
PathBuf::from("crate-dir/s-2234-0000-svh"),
|
PathBuf::from("crate-dir/s-2234-0000-svh"),
|
||||||
PathBuf::from("crate-dir/s-1234-0000-svh")
|
PathBuf::from("crate-dir/s-1234-0000-svh")
|
||||||
|
@ -66,12 +66,12 @@ fn test_find_source_directory_in_iter() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Handle empty
|
// Handle empty
|
||||||
assert_eq!(find_source_directory_in_iter(vec![].into_iter(), &already_visited), None);
|
assert_eq!(find_source_directory_in_iter([].into_iter(), &already_visited), None);
|
||||||
|
|
||||||
// Handle only working
|
// Handle only working
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
find_source_directory_in_iter(
|
find_source_directory_in_iter(
|
||||||
vec![
|
[
|
||||||
PathBuf::from("crate-dir/s-3234-0000-working"),
|
PathBuf::from("crate-dir/s-3234-0000-working"),
|
||||||
PathBuf::from("crate-dir/s-2234-0000-working"),
|
PathBuf::from("crate-dir/s-2234-0000-working"),
|
||||||
PathBuf::from("crate-dir/s-1234-0000-working")
|
PathBuf::from("crate-dir/s-1234-0000-working")
|
||||||
|
|
|
@ -771,7 +771,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
|
||||||
self.suggest_boxing_for_return_impl_trait(
|
self.suggest_boxing_for_return_impl_trait(
|
||||||
err,
|
err,
|
||||||
ret_sp,
|
ret_sp,
|
||||||
vec![then, else_sp].into_iter(),
|
[then, else_sp].into_iter(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -807,10 +807,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
|
||||||
);
|
);
|
||||||
let sugg = arm_spans
|
let sugg = arm_spans
|
||||||
.flat_map(|sp| {
|
.flat_map(|sp| {
|
||||||
vec![
|
[(sp.shrink_to_lo(), "Box::new(".to_string()), (sp.shrink_to_hi(), ")".to_string())]
|
||||||
(sp.shrink_to_lo(), "Box::new(".to_string()),
|
|
||||||
(sp.shrink_to_hi(), ")".to_string()),
|
|
||||||
]
|
|
||||||
.into_iter()
|
.into_iter()
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
|
@ -540,7 +540,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
|
||||||
// error[E0284]: type annotations needed
|
// error[E0284]: type annotations needed
|
||||||
// --> file.rs:2:5
|
// --> file.rs:2:5
|
||||||
// |
|
// |
|
||||||
// 2 | vec![Ok(2)].into_iter().collect()?;
|
// 2 | [Ok(2)].into_iter().collect()?;
|
||||||
// | ^^^^^^^ cannot infer type
|
// | ^^^^^^^ cannot infer type
|
||||||
// |
|
// |
|
||||||
// = note: cannot resolve `<_ as std::ops::Try>::Ok == _`
|
// = note: cannot resolve `<_ as std::ops::Try>::Ok == _`
|
||||||
|
|
|
@ -550,7 +550,7 @@ impl<'a> Parser<'a> {
|
||||||
/// a diagnostic to suggest removing them.
|
/// a diagnostic to suggest removing them.
|
||||||
///
|
///
|
||||||
/// ```ignore (diagnostic)
|
/// ```ignore (diagnostic)
|
||||||
/// let _ = vec![1, 2, 3].into_iter().collect::<Vec<usize>>>>();
|
/// let _ = [1, 2, 3].into_iter().collect::<Vec<usize>>>>();
|
||||||
/// ^^ help: remove extra angle brackets
|
/// ^^ help: remove extra angle brackets
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
|
|
|
@ -17,12 +17,10 @@ pub fn target(target_cpu: String) -> Target {
|
||||||
linker: Some("avr-gcc".to_owned()),
|
linker: Some("avr-gcc".to_owned()),
|
||||||
executables: true,
|
executables: true,
|
||||||
eh_frame_header: false,
|
eh_frame_header: false,
|
||||||
pre_link_args: vec![(LinkerFlavor::Gcc, vec![format!("-mmcu={}", target_cpu)])]
|
pre_link_args: [(LinkerFlavor::Gcc, vec![format!("-mmcu={}", target_cpu)])]
|
||||||
.into_iter()
|
|
||||||
.collect(),
|
|
||||||
late_link_args: vec![(LinkerFlavor::Gcc, vec!["-lgcc".to_owned()])]
|
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect(),
|
.collect(),
|
||||||
|
late_link_args: [(LinkerFlavor::Gcc, vec!["-lgcc".to_owned()])].into_iter().collect(),
|
||||||
max_atomic_width: Some(0),
|
max_atomic_width: Some(0),
|
||||||
atomic_cas: false,
|
atomic_cas: false,
|
||||||
..TargetOptions::default()
|
..TargetOptions::default()
|
||||||
|
|
|
@ -574,15 +574,15 @@ impl ToJson for StackProbeType {
|
||||||
fn to_json(&self) -> Json {
|
fn to_json(&self) -> Json {
|
||||||
Json::Object(match self {
|
Json::Object(match self {
|
||||||
StackProbeType::None => {
|
StackProbeType::None => {
|
||||||
vec![(String::from("kind"), "none".to_json())].into_iter().collect()
|
[(String::from("kind"), "none".to_json())].into_iter().collect()
|
||||||
}
|
}
|
||||||
StackProbeType::Inline => {
|
StackProbeType::Inline => {
|
||||||
vec![(String::from("kind"), "inline".to_json())].into_iter().collect()
|
[(String::from("kind"), "inline".to_json())].into_iter().collect()
|
||||||
}
|
}
|
||||||
StackProbeType::Call => {
|
StackProbeType::Call => {
|
||||||
vec![(String::from("kind"), "call".to_json())].into_iter().collect()
|
[(String::from("kind"), "call".to_json())].into_iter().collect()
|
||||||
}
|
}
|
||||||
StackProbeType::InlineOrCall { min_llvm_version_for_inline } => vec![
|
StackProbeType::InlineOrCall { min_llvm_version_for_inline } => [
|
||||||
(String::from("kind"), "inline-or-call".to_json()),
|
(String::from("kind"), "inline-or-call".to_json()),
|
||||||
(
|
(
|
||||||
String::from("min-llvm-version-for-inline"),
|
String::from("min-llvm-version-for-inline"),
|
||||||
|
|
|
@ -2247,7 +2247,7 @@ pub fn recursive_type_with_infinite_size_error(
|
||||||
spans
|
spans
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|&span| {
|
.flat_map(|&span| {
|
||||||
vec![
|
[
|
||||||
(span.shrink_to_lo(), "Box<".to_string()),
|
(span.shrink_to_lo(), "Box<".to_string()),
|
||||||
(span.shrink_to_hi(), ">".to_string()),
|
(span.shrink_to_hi(), ">".to_string()),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1226,7 +1226,7 @@ impl<'a, 'tcx> InferCtxtExt<'tcx> for InferCtxt<'a, 'tcx> {
|
||||||
.returns
|
.returns
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|expr| {
|
.flat_map(|expr| {
|
||||||
vec![
|
[
|
||||||
(expr.span.shrink_to_lo(), "Box::new(".to_string()),
|
(expr.span.shrink_to_lo(), "Box::new(".to_string()),
|
||||||
(expr.span.shrink_to_hi(), ")".to_string()),
|
(expr.span.shrink_to_hi(), ")".to_string()),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1953,7 +1953,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
||||||
ty::Generator(_, ref substs, _) => {
|
ty::Generator(_, ref substs, _) => {
|
||||||
let ty = self.infcx.shallow_resolve(substs.as_generator().tupled_upvars_ty());
|
let ty = self.infcx.shallow_resolve(substs.as_generator().tupled_upvars_ty());
|
||||||
let witness = substs.as_generator().witness();
|
let witness = substs.as_generator().witness();
|
||||||
t.rebind(vec![ty].into_iter().chain(iter::once(witness)).collect())
|
t.rebind([ty].into_iter().chain(iter::once(witness)).collect())
|
||||||
}
|
}
|
||||||
|
|
||||||
ty::GeneratorWitness(types) => {
|
ty::GeneratorWitness(types) => {
|
||||||
|
|
|
@ -1667,10 +1667,10 @@ impl<'tcx, 'exprs, E: AsCoercionSite> CoerceMany<'tcx, 'exprs, E> {
|
||||||
],
|
],
|
||||||
Applicability::MachineApplicable,
|
Applicability::MachineApplicable,
|
||||||
);
|
);
|
||||||
let sugg = vec![sp, cause.span]
|
let sugg = [sp, cause.span]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.flat_map(|sp| {
|
.flat_map(|sp| {
|
||||||
vec![
|
[
|
||||||
(sp.shrink_to_lo(), "Box::new(".to_string()),
|
(sp.shrink_to_lo(), "Box::new(".to_string()),
|
||||||
(sp.shrink_to_hi(), ")".to_string()),
|
(sp.shrink_to_hi(), ")".to_string()),
|
||||||
]
|
]
|
||||||
|
|
|
@ -86,7 +86,7 @@ pub fn determine_parameters_to_be_inferred<'a, 'tcx>(
|
||||||
|
|
||||||
fn lang_items(tcx: TyCtxt<'_>) -> Vec<(hir::HirId, Vec<ty::Variance>)> {
|
fn lang_items(tcx: TyCtxt<'_>) -> Vec<(hir::HirId, Vec<ty::Variance>)> {
|
||||||
let lang_items = tcx.lang_items();
|
let lang_items = tcx.lang_items();
|
||||||
let all = vec![
|
let all = [
|
||||||
(lang_items.phantom_data(), vec![ty::Covariant]),
|
(lang_items.phantom_data(), vec![ty::Covariant]),
|
||||||
(lang_items.unsafe_cell_type(), vec![ty::Invariant]),
|
(lang_items.unsafe_cell_type(), vec![ty::Invariant]),
|
||||||
];
|
];
|
||||||
|
|
|
@ -728,7 +728,7 @@ fn test_range_large() {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_range_inclusive_max_value() {
|
fn test_range_inclusive_max_value() {
|
||||||
let max = usize::MAX;
|
let max = usize::MAX;
|
||||||
let map: BTreeMap<_, _> = vec![(max, 0)].into_iter().collect();
|
let map: BTreeMap<_, _> = [(max, 0)].into_iter().collect();
|
||||||
|
|
||||||
assert_eq!(map.range(max..=max).collect::<Vec<_>>(), &[(&max, &0)]);
|
assert_eq!(map.range(max..=max).collect::<Vec<_>>(), &[(&max, &0)]);
|
||||||
}
|
}
|
||||||
|
@ -2128,7 +2128,7 @@ fn test_into_iter_drop_leak_height_1() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_into_keys() {
|
fn test_into_keys() {
|
||||||
let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')];
|
let vec = [(1, 'a'), (2, 'b'), (3, 'c')];
|
||||||
let map: BTreeMap<_, _> = vec.into_iter().collect();
|
let map: BTreeMap<_, _> = vec.into_iter().collect();
|
||||||
let keys: Vec<_> = map.into_keys().collect();
|
let keys: Vec<_> = map.into_keys().collect();
|
||||||
|
|
||||||
|
|
|
@ -669,7 +669,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||||
/// ```
|
/// ```
|
||||||
/// use std::collections::VecDeque;
|
/// use std::collections::VecDeque;
|
||||||
///
|
///
|
||||||
/// let mut buf: VecDeque<i32> = vec![1].into_iter().collect();
|
/// let mut buf: VecDeque<i32> = [1].into_iter().collect();
|
||||||
/// buf.reserve_exact(10);
|
/// buf.reserve_exact(10);
|
||||||
/// assert!(buf.capacity() >= 11);
|
/// assert!(buf.capacity() >= 11);
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -692,7 +692,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||||
/// ```
|
/// ```
|
||||||
/// use std::collections::VecDeque;
|
/// use std::collections::VecDeque;
|
||||||
///
|
///
|
||||||
/// let mut buf: VecDeque<i32> = vec![1].into_iter().collect();
|
/// let mut buf: VecDeque<i32> = [1].into_iter().collect();
|
||||||
/// buf.reserve(10);
|
/// buf.reserve(10);
|
||||||
/// assert!(buf.capacity() >= 11);
|
/// assert!(buf.capacity() >= 11);
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -1153,7 +1153,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||||
/// ```
|
/// ```
|
||||||
/// use std::collections::VecDeque;
|
/// use std::collections::VecDeque;
|
||||||
///
|
///
|
||||||
/// let v: VecDeque<_> = vec![1, 2, 3].into_iter().collect();
|
/// let v: VecDeque<_> = [1, 2, 3].into_iter().collect();
|
||||||
/// let range = v.range(2..).copied().collect::<VecDeque<_>>();
|
/// let range = v.range(2..).copied().collect::<VecDeque<_>>();
|
||||||
/// assert_eq!(range, [3]);
|
/// assert_eq!(range, [3]);
|
||||||
///
|
///
|
||||||
|
@ -1188,7 +1188,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||||
/// ```
|
/// ```
|
||||||
/// use std::collections::VecDeque;
|
/// use std::collections::VecDeque;
|
||||||
///
|
///
|
||||||
/// let mut v: VecDeque<_> = vec![1, 2, 3].into_iter().collect();
|
/// let mut v: VecDeque<_> = [1, 2, 3].into_iter().collect();
|
||||||
/// for v in v.range_mut(2..) {
|
/// for v in v.range_mut(2..) {
|
||||||
/// *v *= 2;
|
/// *v *= 2;
|
||||||
/// }
|
/// }
|
||||||
|
@ -1235,7 +1235,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||||
/// ```
|
/// ```
|
||||||
/// use std::collections::VecDeque;
|
/// use std::collections::VecDeque;
|
||||||
///
|
///
|
||||||
/// let mut v: VecDeque<_> = vec![1, 2, 3].into_iter().collect();
|
/// let mut v: VecDeque<_> = [1, 2, 3].into_iter().collect();
|
||||||
/// let drained = v.drain(2..).collect::<VecDeque<_>>();
|
/// let drained = v.drain(2..).collect::<VecDeque<_>>();
|
||||||
/// assert_eq!(drained, [3]);
|
/// assert_eq!(drained, [3]);
|
||||||
/// assert_eq!(v, [1, 2]);
|
/// assert_eq!(v, [1, 2]);
|
||||||
|
@ -2025,7 +2025,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||||
/// ```
|
/// ```
|
||||||
/// use std::collections::VecDeque;
|
/// use std::collections::VecDeque;
|
||||||
///
|
///
|
||||||
/// let mut buf: VecDeque<_> = vec![1, 2, 3].into_iter().collect();
|
/// let mut buf: VecDeque<_> = [1, 2, 3].into_iter().collect();
|
||||||
/// let buf2 = buf.split_off(1);
|
/// let buf2 = buf.split_off(1);
|
||||||
/// assert_eq!(buf, [1]);
|
/// assert_eq!(buf, [1]);
|
||||||
/// assert_eq!(buf2, [2, 3]);
|
/// assert_eq!(buf2, [2, 3]);
|
||||||
|
@ -2091,8 +2091,8 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||||
/// ```
|
/// ```
|
||||||
/// use std::collections::VecDeque;
|
/// use std::collections::VecDeque;
|
||||||
///
|
///
|
||||||
/// let mut buf: VecDeque<_> = vec![1, 2].into_iter().collect();
|
/// let mut buf: VecDeque<_> = [1, 2].into_iter().collect();
|
||||||
/// let mut buf2: VecDeque<_> = vec![3, 4].into_iter().collect();
|
/// let mut buf2: VecDeque<_> = [3, 4].into_iter().collect();
|
||||||
/// buf.append(&mut buf2);
|
/// buf.append(&mut buf2);
|
||||||
/// assert_eq!(buf, [1, 2, 3, 4]);
|
/// assert_eq!(buf, [1, 2, 3, 4]);
|
||||||
/// assert_eq!(buf2, []);
|
/// assert_eq!(buf2, []);
|
||||||
|
|
|
@ -304,7 +304,7 @@ fn test_show() {
|
||||||
let list: LinkedList<_> = (0..10).collect();
|
let list: LinkedList<_> = (0..10).collect();
|
||||||
assert_eq!(format!("{:?}", list), "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]");
|
assert_eq!(format!("{:?}", list), "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]");
|
||||||
|
|
||||||
let list: LinkedList<_> = vec!["just", "one", "test", "more"].iter().cloned().collect();
|
let list: LinkedList<_> = ["just", "one", "test", "more"].into_iter().collect();
|
||||||
assert_eq!(format!("{:?}", list), "[\"just\", \"one\", \"test\", \"more\"]");
|
assert_eq!(format!("{:?}", list), "[\"just\", \"one\", \"test\", \"more\"]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ fn test_extend() {
|
||||||
assert_eq!(a.len(), 4);
|
assert_eq!(a.len(), 4);
|
||||||
assert!(a.iter().eq(&[1, 2, 3, 4]));
|
assert!(a.iter().eq(&[1, 2, 3, 4]));
|
||||||
|
|
||||||
let b: LinkedList<_> = vec![5, 6, 7].into_iter().collect();
|
let b: LinkedList<_> = [5, 6, 7].into_iter().collect();
|
||||||
a.extend(b); // specializes to `append`
|
a.extend(b); // specializes to `append`
|
||||||
|
|
||||||
assert_eq!(a.len(), 7);
|
assert_eq!(a.len(), 7);
|
||||||
|
@ -375,7 +375,7 @@ fn drain_filter_empty() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn drain_filter_zst() {
|
fn drain_filter_zst() {
|
||||||
let mut list: LinkedList<_> = vec![(), (), (), (), ()].into_iter().collect();
|
let mut list: LinkedList<_> = [(), (), (), (), ()].into_iter().collect();
|
||||||
let initial_len = list.len();
|
let initial_len = list.len();
|
||||||
let mut count = 0;
|
let mut count = 0;
|
||||||
|
|
||||||
|
@ -398,7 +398,7 @@ fn drain_filter_zst() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn drain_filter_false() {
|
fn drain_filter_false() {
|
||||||
let mut list: LinkedList<_> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
let mut list: LinkedList<_> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
||||||
|
|
||||||
let initial_len = list.len();
|
let initial_len = list.len();
|
||||||
let mut count = 0;
|
let mut count = 0;
|
||||||
|
@ -421,7 +421,7 @@ fn drain_filter_false() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn drain_filter_true() {
|
fn drain_filter_true() {
|
||||||
let mut list: LinkedList<_> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
let mut list: LinkedList<_> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
||||||
|
|
||||||
let initial_len = list.len();
|
let initial_len = list.len();
|
||||||
let mut count = 0;
|
let mut count = 0;
|
||||||
|
@ -447,7 +447,7 @@ fn drain_filter_true() {
|
||||||
fn drain_filter_complex() {
|
fn drain_filter_complex() {
|
||||||
{
|
{
|
||||||
// [+xxx++++++xxxxx++++x+x++]
|
// [+xxx++++++xxxxx++++x+x++]
|
||||||
let mut list = vec![
|
let mut list = [
|
||||||
1, 2, 4, 6, 7, 9, 11, 13, 15, 17, 18, 20, 22, 24, 26, 27, 29, 31, 33, 34, 35, 36, 37,
|
1, 2, 4, 6, 7, 9, 11, 13, 15, 17, 18, 20, 22, 24, 26, 27, 29, 31, 33, 34, 35, 36, 37,
|
||||||
39,
|
39,
|
||||||
]
|
]
|
||||||
|
@ -467,9 +467,8 @@ fn drain_filter_complex() {
|
||||||
|
|
||||||
{
|
{
|
||||||
// [xxx++++++xxxxx++++x+x++]
|
// [xxx++++++xxxxx++++x+x++]
|
||||||
let mut list = vec![
|
let mut list =
|
||||||
2, 4, 6, 7, 9, 11, 13, 15, 17, 18, 20, 22, 24, 26, 27, 29, 31, 33, 34, 35, 36, 37, 39,
|
[2, 4, 6, 7, 9, 11, 13, 15, 17, 18, 20, 22, 24, 26, 27, 29, 31, 33, 34, 35, 36, 37, 39]
|
||||||
]
|
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect::<LinkedList<_>>();
|
.collect::<LinkedList<_>>();
|
||||||
|
|
||||||
|
@ -487,7 +486,7 @@ fn drain_filter_complex() {
|
||||||
{
|
{
|
||||||
// [xxx++++++xxxxx++++x+x]
|
// [xxx++++++xxxxx++++x+x]
|
||||||
let mut list =
|
let mut list =
|
||||||
vec![2, 4, 6, 7, 9, 11, 13, 15, 17, 18, 20, 22, 24, 26, 27, 29, 31, 33, 34, 35, 36]
|
[2, 4, 6, 7, 9, 11, 13, 15, 17, 18, 20, 22, 24, 26, 27, 29, 31, 33, 34, 35, 36]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect::<LinkedList<_>>();
|
.collect::<LinkedList<_>>();
|
||||||
|
|
||||||
|
@ -504,7 +503,7 @@ fn drain_filter_complex() {
|
||||||
|
|
||||||
{
|
{
|
||||||
// [xxxxxxxxxx+++++++++++]
|
// [xxxxxxxxxx+++++++++++]
|
||||||
let mut list = vec![2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
|
let mut list = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect::<LinkedList<_>>();
|
.collect::<LinkedList<_>>();
|
||||||
|
|
||||||
|
@ -518,7 +517,7 @@ fn drain_filter_complex() {
|
||||||
|
|
||||||
{
|
{
|
||||||
// [+++++++++++xxxxxxxxxx]
|
// [+++++++++++xxxxxxxxxx]
|
||||||
let mut list = vec![1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
|
let mut list = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect::<LinkedList<_>>();
|
.collect::<LinkedList<_>>();
|
||||||
|
|
||||||
|
|
|
@ -489,7 +489,7 @@ fn test_from_iterator() {
|
||||||
b.extend(u.chars());
|
b.extend(u.chars());
|
||||||
assert_eq!(s, b);
|
assert_eq!(s, b);
|
||||||
|
|
||||||
let c: String = vec![t, u].into_iter().collect();
|
let c: String = [t, u].into_iter().collect();
|
||||||
assert_eq!(s, c);
|
assert_eq!(s, c);
|
||||||
|
|
||||||
let mut d = t.to_string();
|
let mut d = t.to_string();
|
||||||
|
|
|
@ -449,10 +449,10 @@ fn zero_sized_values() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_partition() {
|
fn test_partition() {
|
||||||
assert_eq!(vec![].into_iter().partition(|x: &i32| *x < 3), (vec![], vec![]));
|
assert_eq!([].into_iter().partition(|x: &i32| *x < 3), (vec![], vec![]));
|
||||||
assert_eq!(vec![1, 2, 3].into_iter().partition(|x| *x < 4), (vec![1, 2, 3], vec![]));
|
assert_eq!([1, 2, 3].into_iter().partition(|x| *x < 4), (vec![1, 2, 3], vec![]));
|
||||||
assert_eq!(vec![1, 2, 3].into_iter().partition(|x| *x < 2), (vec![1], vec![2, 3]));
|
assert_eq!([1, 2, 3].into_iter().partition(|x| *x < 2), (vec![1], vec![2, 3]));
|
||||||
assert_eq!(vec![1, 2, 3].into_iter().partition(|x| *x < 0), (vec![], vec![1, 2, 3]));
|
assert_eq!([1, 2, 3].into_iter().partition(|x| *x < 0), (vec![], vec![1, 2, 3]));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -924,7 +924,7 @@ fn test_into_iter_debug() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_into_iter_count() {
|
fn test_into_iter_count() {
|
||||||
assert_eq!(vec![1, 2, 3].into_iter().count(), 3);
|
assert_eq!([1, 2, 3].into_iter().count(), 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -933,7 +933,7 @@ fn test_into_iter_clone() {
|
||||||
let v: Vec<i32> = it.collect();
|
let v: Vec<i32> = it.collect();
|
||||||
assert_eq!(&v[..], slice);
|
assert_eq!(&v[..], slice);
|
||||||
}
|
}
|
||||||
let mut it = vec![1, 2, 3].into_iter();
|
let mut it = [1, 2, 3].into_iter();
|
||||||
iter_equal(it.clone(), &[1, 2, 3]);
|
iter_equal(it.clone(), &[1, 2, 3]);
|
||||||
assert_eq!(it.next(), Some(1));
|
assert_eq!(it.next(), Some(1));
|
||||||
let mut it = it.rev();
|
let mut it = it.rev();
|
||||||
|
@ -972,7 +972,7 @@ fn test_into_iter_leak() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_into_iter_advance_by() {
|
fn test_into_iter_advance_by() {
|
||||||
let mut i = vec![1, 2, 3, 4, 5].into_iter();
|
let mut i = [1, 2, 3, 4, 5].into_iter();
|
||||||
i.advance_by(0).unwrap();
|
i.advance_by(0).unwrap();
|
||||||
i.advance_back_by(0).unwrap();
|
i.advance_back_by(0).unwrap();
|
||||||
assert_eq!(i.as_slice(), [1, 2, 3, 4, 5]);
|
assert_eq!(i.as_slice(), [1, 2, 3, 4, 5]);
|
||||||
|
@ -1799,7 +1799,7 @@ fn test_stable_pointers() {
|
||||||
assert_eq!(*v0, 13);
|
assert_eq!(*v0, 13);
|
||||||
next_then_drop(v.splice(5..8, vec![1])); // replacement is smaller than original range
|
next_then_drop(v.splice(5..8, vec![1])); // replacement is smaller than original range
|
||||||
assert_eq!(*v0, 13);
|
assert_eq!(*v0, 13);
|
||||||
next_then_drop(v.splice(5..6, vec![1; 10].into_iter().filter(|_| true))); // lower bound not exact
|
next_then_drop(v.splice(5..6, [1; 10].into_iter().filter(|_| true))); // lower bound not exact
|
||||||
assert_eq!(*v0, 13);
|
assert_eq!(*v0, 13);
|
||||||
|
|
||||||
// spare_capacity_mut
|
// spare_capacity_mut
|
||||||
|
|
|
@ -927,8 +927,8 @@ fn test_as_mut_slices() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_append() {
|
fn test_append() {
|
||||||
let mut a: VecDeque<_> = vec![1, 2, 3].into_iter().collect();
|
let mut a: VecDeque<_> = [1, 2, 3].into_iter().collect();
|
||||||
let mut b: VecDeque<_> = vec![4, 5, 6].into_iter().collect();
|
let mut b: VecDeque<_> = [4, 5, 6].into_iter().collect();
|
||||||
|
|
||||||
// normal append
|
// normal append
|
||||||
a.append(&mut b);
|
a.append(&mut b);
|
||||||
|
@ -1209,7 +1209,7 @@ fn test_try_reserve() {
|
||||||
|
|
||||||
{
|
{
|
||||||
// Same basic idea, but with non-zero len
|
// Same basic idea, but with non-zero len
|
||||||
let mut ten_bytes: VecDeque<u8> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
let mut ten_bytes: VecDeque<u8> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
||||||
|
|
||||||
if let Err(CapacityOverflow) = ten_bytes.try_reserve(MAX_CAP - 10).map_err(|e| e.kind()) {
|
if let Err(CapacityOverflow) = ten_bytes.try_reserve(MAX_CAP - 10).map_err(|e| e.kind()) {
|
||||||
panic!("isize::MAX shouldn't trigger an overflow!");
|
panic!("isize::MAX shouldn't trigger an overflow!");
|
||||||
|
@ -1240,7 +1240,7 @@ fn test_try_reserve() {
|
||||||
|
|
||||||
{
|
{
|
||||||
// Same basic idea, but with interesting type size
|
// Same basic idea, but with interesting type size
|
||||||
let mut ten_u32s: VecDeque<u32> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
let mut ten_u32s: VecDeque<u32> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
||||||
|
|
||||||
if let Err(CapacityOverflow) = ten_u32s.try_reserve(MAX_CAP / 4 - 10).map_err(|e| e.kind())
|
if let Err(CapacityOverflow) = ten_u32s.try_reserve(MAX_CAP / 4 - 10).map_err(|e| e.kind())
|
||||||
{
|
{
|
||||||
|
@ -1322,7 +1322,7 @@ fn test_try_reserve_exact() {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut ten_bytes: VecDeque<u8> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
let mut ten_bytes: VecDeque<u8> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
||||||
|
|
||||||
if let Err(CapacityOverflow) =
|
if let Err(CapacityOverflow) =
|
||||||
ten_bytes.try_reserve_exact(MAX_CAP - 10).map_err(|e| e.kind())
|
ten_bytes.try_reserve_exact(MAX_CAP - 10).map_err(|e| e.kind())
|
||||||
|
@ -1355,7 +1355,7 @@ fn test_try_reserve_exact() {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut ten_u32s: VecDeque<u32> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
let mut ten_u32s: VecDeque<u32> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_iter().collect();
|
||||||
|
|
||||||
if let Err(CapacityOverflow) =
|
if let Err(CapacityOverflow) =
|
||||||
ten_u32s.try_reserve_exact(MAX_CAP / 4 - 10).map_err(|e| e.kind())
|
ten_u32s.try_reserve_exact(MAX_CAP / 4 - 10).map_err(|e| e.kind())
|
||||||
|
|
|
@ -91,7 +91,7 @@ pub use num::FloatToInt;
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// use std::convert::identity;
|
/// use std::convert::identity;
|
||||||
///
|
///
|
||||||
/// let iter = vec![Some(1), None, Some(3)].into_iter();
|
/// let iter = [Some(1), None, Some(3)].into_iter();
|
||||||
/// let filtered = iter.filter_map(identity).collect::<Vec<_>>();
|
/// let filtered = iter.filter_map(identity).collect::<Vec<_>>();
|
||||||
/// assert_eq!(vec![1, 3], filtered);
|
/// assert_eq!(vec![1, 3], filtered);
|
||||||
/// ```
|
/// ```
|
||||||
|
|
|
@ -19,7 +19,7 @@ use crate::ops::Try;
|
||||||
/// you can also [`map`] backwards:
|
/// you can also [`map`] backwards:
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// let v: Vec<i32> = vec![1, 2, 3].into_iter().map(|x| x + 1).rev().collect();
|
/// let v: Vec<i32> = [1, 2, 3].into_iter().map(|x| x + 1).rev().collect();
|
||||||
///
|
///
|
||||||
/// assert_eq!(v, [4, 3, 2]);
|
/// assert_eq!(v, [4, 3, 2]);
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -32,7 +32,7 @@ use crate::ops::Try;
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// let mut c = 0;
|
/// let mut c = 0;
|
||||||
///
|
///
|
||||||
/// for pair in vec!['a', 'b', 'c'].into_iter()
|
/// for pair in ['a', 'b', 'c'].into_iter()
|
||||||
/// .map(|letter| { c += 1; (letter, c) }) {
|
/// .map(|letter| { c += 1; (letter, c) }) {
|
||||||
/// println!("{:?}", pair);
|
/// println!("{:?}", pair);
|
||||||
/// }
|
/// }
|
||||||
|
@ -49,7 +49,7 @@ use crate::ops::Try;
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// let mut c = 0;
|
/// let mut c = 0;
|
||||||
///
|
///
|
||||||
/// for pair in vec!['a', 'b', 'c'].into_iter()
|
/// for pair in ['a', 'b', 'c'].into_iter()
|
||||||
/// .map(|letter| { c += 1; (letter, c) })
|
/// .map(|letter| { c += 1; (letter, c) })
|
||||||
/// .rev() {
|
/// .rev() {
|
||||||
/// println!("{:?}", pair);
|
/// println!("{:?}", pair);
|
||||||
|
|
|
@ -124,7 +124,7 @@ pub trait FromIterator<A>: Sized {
|
||||||
/// Basic usage:
|
/// Basic usage:
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// let v = vec![1, 2, 3];
|
/// let v = [1, 2, 3];
|
||||||
/// let mut iter = v.into_iter();
|
/// let mut iter = v.into_iter();
|
||||||
///
|
///
|
||||||
/// assert_eq!(Some(1), iter.next());
|
/// assert_eq!(Some(1), iter.next());
|
||||||
|
@ -215,7 +215,7 @@ pub trait IntoIterator {
|
||||||
/// Basic usage:
|
/// Basic usage:
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// let v = vec![1, 2, 3];
|
/// let v = [1, 2, 3];
|
||||||
/// let mut iter = v.into_iter();
|
/// let mut iter = v.into_iter();
|
||||||
///
|
///
|
||||||
/// assert_eq!(Some(1), iter.next());
|
/// assert_eq!(Some(1), iter.next());
|
||||||
|
|
|
@ -590,7 +590,7 @@ pub trait Iterator {
|
||||||
/// #[derive(PartialEq, Debug)]
|
/// #[derive(PartialEq, Debug)]
|
||||||
/// struct NotClone(usize);
|
/// struct NotClone(usize);
|
||||||
///
|
///
|
||||||
/// let v = vec![NotClone(0), NotClone(1), NotClone(2)];
|
/// let v = [NotClone(0), NotClone(1), NotClone(2)];
|
||||||
/// let mut it = v.into_iter().intersperse_with(|| NotClone(99));
|
/// let mut it = v.into_iter().intersperse_with(|| NotClone(99));
|
||||||
///
|
///
|
||||||
/// assert_eq!(it.next(), Some(NotClone(0))); // The first element from `v`.
|
/// assert_eq!(it.next(), Some(NotClone(0))); // The first element from `v`.
|
||||||
|
@ -1270,7 +1270,7 @@ pub trait Iterator {
|
||||||
/// `take` will limit itself to the size of the underlying iterator:
|
/// `take` will limit itself to the size of the underlying iterator:
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// let v = vec![1, 2];
|
/// let v = [1, 2];
|
||||||
/// let mut iter = v.into_iter().take(5);
|
/// let mut iter = v.into_iter().take(5);
|
||||||
/// assert_eq!(iter.next(), Some(1));
|
/// assert_eq!(iter.next(), Some(1));
|
||||||
/// assert_eq!(iter.next(), Some(2));
|
/// assert_eq!(iter.next(), Some(2));
|
||||||
|
@ -1604,7 +1604,7 @@ pub trait Iterator {
|
||||||
/// Basic usage:
|
/// Basic usage:
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// let mut words = vec!["hello", "world", "of", "Rust"].into_iter();
|
/// let mut words = ["hello", "world", "of", "Rust"].into_iter();
|
||||||
///
|
///
|
||||||
/// // Take the first two words.
|
/// // Take the first two words.
|
||||||
/// let hello_world: Vec<_> = words.by_ref().take(2).collect();
|
/// let hello_world: Vec<_> = words.by_ref().take(2).collect();
|
||||||
|
@ -2700,7 +2700,7 @@ pub trait Iterator {
|
||||||
/// incomparable. You can work around this by using [`Iterator::reduce`]:
|
/// incomparable. You can work around this by using [`Iterator::reduce`]:
|
||||||
/// ```
|
/// ```
|
||||||
/// assert_eq!(
|
/// assert_eq!(
|
||||||
/// vec![2.4, f32::NAN, 1.3]
|
/// [2.4, f32::NAN, 1.3]
|
||||||
/// .into_iter()
|
/// .into_iter()
|
||||||
/// .reduce(f32::max)
|
/// .reduce(f32::max)
|
||||||
/// .unwrap(),
|
/// .unwrap(),
|
||||||
|
@ -2738,7 +2738,7 @@ pub trait Iterator {
|
||||||
/// incomparable. You can work around this by using [`Iterator::reduce`]:
|
/// incomparable. You can work around this by using [`Iterator::reduce`]:
|
||||||
/// ```
|
/// ```
|
||||||
/// assert_eq!(
|
/// assert_eq!(
|
||||||
/// vec![2.4, f32::NAN, 1.3]
|
/// [2.4, f32::NAN, 1.3]
|
||||||
/// .into_iter()
|
/// .into_iter()
|
||||||
/// .reduce(f32::min)
|
/// .reduce(f32::min)
|
||||||
/// .unwrap(),
|
/// .unwrap(),
|
||||||
|
|
|
@ -270,7 +270,7 @@
|
||||||
//! let mut bt = BTreeMap::new();
|
//! let mut bt = BTreeMap::new();
|
||||||
//! bt.insert(20u8, "foo");
|
//! bt.insert(20u8, "foo");
|
||||||
//! bt.insert(42u8, "bar");
|
//! bt.insert(42u8, "bar");
|
||||||
//! let res = vec![0u8, 1, 11, 200, 22]
|
//! let res = [0u8, 1, 11, 200, 22]
|
||||||
//! .into_iter()
|
//! .into_iter()
|
||||||
//! .map(|x| {
|
//! .map(|x| {
|
||||||
//! // `checked_sub()` returns `None` on error
|
//! // `checked_sub()` returns `None` on error
|
||||||
|
@ -390,10 +390,10 @@
|
||||||
//! [impl-FromIterator]: Option#impl-FromIterator%3COption%3CA%3E%3E
|
//! [impl-FromIterator]: Option#impl-FromIterator%3COption%3CA%3E%3E
|
||||||
//!
|
//!
|
||||||
//! ```
|
//! ```
|
||||||
//! let v = vec![Some(2), Some(4), None, Some(8)];
|
//! let v = [Some(2), Some(4), None, Some(8)];
|
||||||
//! let res: Option<Vec<_>> = v.into_iter().collect();
|
//! let res: Option<Vec<_>> = v.into_iter().collect();
|
||||||
//! assert_eq!(res, None);
|
//! assert_eq!(res, None);
|
||||||
//! let v = vec![Some(2), Some(4), Some(8)];
|
//! let v = [Some(2), Some(4), Some(8)];
|
||||||
//! let res: Option<Vec<_>> = v.into_iter().collect();
|
//! let res: Option<Vec<_>> = v.into_iter().collect();
|
||||||
//! assert_eq!(res, Some(vec![2, 4, 8]));
|
//! assert_eq!(res, Some(vec![2, 4, 8]));
|
||||||
//! ```
|
//! ```
|
||||||
|
@ -407,10 +407,10 @@
|
||||||
//! [impl-Sum]: Option#impl-Sum%3COption%3CU%3E%3E
|
//! [impl-Sum]: Option#impl-Sum%3COption%3CU%3E%3E
|
||||||
//!
|
//!
|
||||||
//! ```
|
//! ```
|
||||||
//! let v = vec![None, Some(1), Some(2), Some(3)];
|
//! let v = [None, Some(1), Some(2), Some(3)];
|
||||||
//! let res: Option<i32> = v.into_iter().sum();
|
//! let res: Option<i32> = v.into_iter().sum();
|
||||||
//! assert_eq!(res, None);
|
//! assert_eq!(res, None);
|
||||||
//! let v = vec![Some(1), Some(2), Some(21)];
|
//! let v = [Some(1), Some(2), Some(21)];
|
||||||
//! let res: Option<i32> = v.into_iter().product();
|
//! let res: Option<i32> = v.into_iter().product();
|
||||||
//! assert_eq!(res, Some(42));
|
//! assert_eq!(res, Some(42));
|
||||||
//! ```
|
//! ```
|
||||||
|
|
|
@ -436,7 +436,7 @@
|
||||||
//! # use std::str::FromStr;
|
//! # use std::str::FromStr;
|
||||||
//! let mut results = vec![];
|
//! let mut results = vec![];
|
||||||
//! let mut errs = vec![];
|
//! let mut errs = vec![];
|
||||||
//! let nums: Vec<_> = vec!["17", "not a number", "99", "-27", "768"]
|
//! let nums: Vec<_> = ["17", "not a number", "99", "-27", "768"]
|
||||||
//! .into_iter()
|
//! .into_iter()
|
||||||
//! .map(u8::from_str)
|
//! .map(u8::from_str)
|
||||||
//! // Save clones of the raw `Result` values to inspect
|
//! // Save clones of the raw `Result` values to inspect
|
||||||
|
@ -462,10 +462,10 @@
|
||||||
//! [impl-FromIterator]: Result#impl-FromIterator%3CResult%3CA%2C%20E%3E%3E
|
//! [impl-FromIterator]: Result#impl-FromIterator%3CResult%3CA%2C%20E%3E%3E
|
||||||
//!
|
//!
|
||||||
//! ```
|
//! ```
|
||||||
//! let v = vec![Ok(2), Ok(4), Err("err!"), Ok(8)];
|
//! let v = [Ok(2), Ok(4), Err("err!"), Ok(8)];
|
||||||
//! let res: Result<Vec<_>, &str> = v.into_iter().collect();
|
//! let res: Result<Vec<_>, &str> = v.into_iter().collect();
|
||||||
//! assert_eq!(res, Err("err!"));
|
//! assert_eq!(res, Err("err!"));
|
||||||
//! let v = vec![Ok(2), Ok(4), Ok(8)];
|
//! let v = [Ok(2), Ok(4), Ok(8)];
|
||||||
//! let res: Result<Vec<_>, &str> = v.into_iter().collect();
|
//! let res: Result<Vec<_>, &str> = v.into_iter().collect();
|
||||||
//! assert_eq!(res, Ok(vec![2, 4, 8]));
|
//! assert_eq!(res, Ok(vec![2, 4, 8]));
|
||||||
//! ```
|
//! ```
|
||||||
|
@ -479,10 +479,10 @@
|
||||||
//! [impl-Sum]: Result#impl-Sum%3CResult%3CU%2C%20E%3E%3E
|
//! [impl-Sum]: Result#impl-Sum%3CResult%3CU%2C%20E%3E%3E
|
||||||
//!
|
//!
|
||||||
//! ```
|
//! ```
|
||||||
//! let v = vec![Err("error!"), Ok(1), Ok(2), Ok(3), Err("foo")];
|
//! let v = [Err("error!"), Ok(1), Ok(2), Ok(3), Err("foo")];
|
||||||
//! let res: Result<i32, &str> = v.into_iter().sum();
|
//! let res: Result<i32, &str> = v.into_iter().sum();
|
||||||
//! assert_eq!(res, Err("error!"));
|
//! assert_eq!(res, Err("error!"));
|
||||||
//! let v: Vec<Result<i32, &str>> = vec![Ok(1), Ok(2), Ok(21)];
|
//! let v = [Ok(1), Ok(2), Ok(21)];
|
||||||
//! let res: Result<i32, &str> = v.into_iter().product();
|
//! let res: Result<i32, &str> = v.into_iter().product();
|
||||||
//! assert_eq!(res, Ok(42));
|
//! assert_eq!(res, Ok(42));
|
||||||
//! ```
|
//! ```
|
||||||
|
|
|
@ -74,7 +74,7 @@ fn test_intersperse_with() {
|
||||||
struct NotClone {
|
struct NotClone {
|
||||||
u: u32,
|
u: u32,
|
||||||
}
|
}
|
||||||
let r = vec![NotClone { u: 0 }, NotClone { u: 1 }]
|
let r = [NotClone { u: 0 }, NotClone { u: 1 }]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.intersperse_with(|| NotClone { u: 2 })
|
.intersperse_with(|| NotClone { u: 2 })
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
@ -120,7 +120,7 @@ fn test_intersperse_fold() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_intersperse_collect_string() {
|
fn test_intersperse_collect_string() {
|
||||||
let contents = vec![1, 2, 3];
|
let contents = [1, 2, 3];
|
||||||
|
|
||||||
let contents_string = contents
|
let contents_string = contents
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|
|
@ -144,7 +144,7 @@ fn test_iterator_peekable_rfold() {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_iterator_peekable_next_if_eq() {
|
fn test_iterator_peekable_next_if_eq() {
|
||||||
// first, try on references
|
// first, try on references
|
||||||
let xs = vec!["Heart", "of", "Gold"];
|
let xs = ["Heart", "of", "Gold"];
|
||||||
let mut it = xs.into_iter().peekable();
|
let mut it = xs.into_iter().peekable();
|
||||||
// try before `peek()`
|
// try before `peek()`
|
||||||
assert_eq!(it.next_if_eq(&"trillian"), None);
|
assert_eq!(it.next_if_eq(&"trillian"), None);
|
||||||
|
@ -157,7 +157,7 @@ fn test_iterator_peekable_next_if_eq() {
|
||||||
assert_eq!(it.next(), Some("Gold"));
|
assert_eq!(it.next(), Some("Gold"));
|
||||||
|
|
||||||
// make sure comparison works for owned values
|
// make sure comparison works for owned values
|
||||||
let xs = vec![String::from("Ludicrous"), "speed".into()];
|
let xs = [String::from("Ludicrous"), "speed".into()];
|
||||||
let mut it = xs.into_iter().peekable();
|
let mut it = xs.into_iter().peekable();
|
||||||
// make sure basic functionality works
|
// make sure basic functionality works
|
||||||
assert_eq!(it.next_if_eq("Ludicrous"), Some("Ludicrous".into()));
|
assert_eq!(it.next_if_eq("Ludicrous"), Some("Ludicrous".into()));
|
||||||
|
@ -167,7 +167,7 @@ fn test_iterator_peekable_next_if_eq() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_iterator_peekable_mut() {
|
fn test_iterator_peekable_mut() {
|
||||||
let mut it = vec![1, 2, 3].into_iter().peekable();
|
let mut it = [1, 2, 3].into_iter().peekable();
|
||||||
if let Some(p) = it.peek_mut() {
|
if let Some(p) = it.peek_mut() {
|
||||||
if *p == 1 {
|
if *p == 1 {
|
||||||
*p = 5;
|
*p = 5;
|
||||||
|
|
|
@ -456,25 +456,25 @@ fn test_find_map() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_try_reduce() {
|
fn test_try_reduce() {
|
||||||
let v: Vec<usize> = vec![1, 2, 3, 4, 5];
|
let v = [1usize, 2, 3, 4, 5];
|
||||||
let sum = v.into_iter().try_reduce(|x, y| x.checked_add(y));
|
let sum = v.into_iter().try_reduce(|x, y| x.checked_add(y));
|
||||||
assert_eq!(sum, Some(Some(15)));
|
assert_eq!(sum, Some(Some(15)));
|
||||||
|
|
||||||
let v: Vec<usize> = vec![1, 2, 3, 4, 5, usize::MAX];
|
let v = [1, 2, 3, 4, 5, usize::MAX];
|
||||||
let sum = v.into_iter().try_reduce(|x, y| x.checked_add(y));
|
let sum = v.into_iter().try_reduce(|x, y| x.checked_add(y));
|
||||||
assert_eq!(sum, None);
|
assert_eq!(sum, None);
|
||||||
|
|
||||||
let v: Vec<usize> = Vec::new();
|
let v: [usize; 0] = [];
|
||||||
let sum = v.into_iter().try_reduce(|x, y| x.checked_add(y));
|
let sum = v.into_iter().try_reduce(|x, y| x.checked_add(y));
|
||||||
assert_eq!(sum, Some(None));
|
assert_eq!(sum, Some(None));
|
||||||
|
|
||||||
let v = vec!["1", "2", "3", "4", "5"];
|
let v = ["1", "2", "3", "4", "5"];
|
||||||
let max = v.into_iter().try_reduce(|x, y| {
|
let max = v.into_iter().try_reduce(|x, y| {
|
||||||
if x.parse::<usize>().ok()? > y.parse::<usize>().ok()? { Some(x) } else { Some(y) }
|
if x.parse::<usize>().ok()? > y.parse::<usize>().ok()? { Some(x) } else { Some(y) }
|
||||||
});
|
});
|
||||||
assert_eq!(max, Some(Some("5")));
|
assert_eq!(max, Some(Some("5")));
|
||||||
|
|
||||||
let v = vec!["1", "2", "3", "4", "5"];
|
let v = ["1", "2", "3", "4", "5"];
|
||||||
let max: Result<Option<_>, <usize as std::str::FromStr>::Err> =
|
let max: Result<Option<_>, <usize as std::str::FromStr>::Err> =
|
||||||
v.into_iter().try_reduce(|x, y| {
|
v.into_iter().try_reduce(|x, y| {
|
||||||
if x.parse::<usize>()? > y.parse::<usize>()? { Ok(x) } else { Ok(y) }
|
if x.parse::<usize>()? > y.parse::<usize>()? { Ok(x) } else { Ok(y) }
|
||||||
|
|
|
@ -420,8 +420,8 @@ fn test_iterate() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_keys() {
|
fn test_keys() {
|
||||||
let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')];
|
let pairs = [(1, 'a'), (2, 'b'), (3, 'c')];
|
||||||
let map: HashMap<_, _> = vec.into_iter().collect();
|
let map: HashMap<_, _> = pairs.into_iter().collect();
|
||||||
let keys: Vec<_> = map.keys().cloned().collect();
|
let keys: Vec<_> = map.keys().cloned().collect();
|
||||||
assert_eq!(keys.len(), 3);
|
assert_eq!(keys.len(), 3);
|
||||||
assert!(keys.contains(&1));
|
assert!(keys.contains(&1));
|
||||||
|
@ -431,8 +431,8 @@ fn test_keys() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_values() {
|
fn test_values() {
|
||||||
let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')];
|
let pairs = [(1, 'a'), (2, 'b'), (3, 'c')];
|
||||||
let map: HashMap<_, _> = vec.into_iter().collect();
|
let map: HashMap<_, _> = pairs.into_iter().collect();
|
||||||
let values: Vec<_> = map.values().cloned().collect();
|
let values: Vec<_> = map.values().cloned().collect();
|
||||||
assert_eq!(values.len(), 3);
|
assert_eq!(values.len(), 3);
|
||||||
assert!(values.contains(&'a'));
|
assert!(values.contains(&'a'));
|
||||||
|
@ -442,8 +442,8 @@ fn test_values() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_values_mut() {
|
fn test_values_mut() {
|
||||||
let vec = vec![(1, 1), (2, 2), (3, 3)];
|
let pairs = [(1, 1), (2, 2), (3, 3)];
|
||||||
let mut map: HashMap<_, _> = vec.into_iter().collect();
|
let mut map: HashMap<_, _> = pairs.into_iter().collect();
|
||||||
for value in map.values_mut() {
|
for value in map.values_mut() {
|
||||||
*value = (*value) * 2
|
*value = (*value) * 2
|
||||||
}
|
}
|
||||||
|
@ -456,8 +456,8 @@ fn test_values_mut() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_into_keys() {
|
fn test_into_keys() {
|
||||||
let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')];
|
let pairs = [(1, 'a'), (2, 'b'), (3, 'c')];
|
||||||
let map: HashMap<_, _> = vec.into_iter().collect();
|
let map: HashMap<_, _> = pairs.into_iter().collect();
|
||||||
let keys: Vec<_> = map.into_keys().collect();
|
let keys: Vec<_> = map.into_keys().collect();
|
||||||
|
|
||||||
assert_eq!(keys.len(), 3);
|
assert_eq!(keys.len(), 3);
|
||||||
|
@ -468,8 +468,8 @@ fn test_into_keys() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_into_values() {
|
fn test_into_values() {
|
||||||
let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')];
|
let pairs = [(1, 'a'), (2, 'b'), (3, 'c')];
|
||||||
let map: HashMap<_, _> = vec.into_iter().collect();
|
let map: HashMap<_, _> = pairs.into_iter().collect();
|
||||||
let values: Vec<_> = map.into_values().collect();
|
let values: Vec<_> = map.into_values().collect();
|
||||||
|
|
||||||
assert_eq!(values.len(), 3);
|
assert_eq!(values.len(), 3);
|
||||||
|
|
|
@ -232,7 +232,7 @@
|
||||||
//! ```
|
//! ```
|
||||||
//! use std::collections::VecDeque;
|
//! use std::collections::VecDeque;
|
||||||
//!
|
//!
|
||||||
//! let vec = vec![1, 2, 3, 4];
|
//! let vec = [1, 2, 3, 4];
|
||||||
//! let buf: VecDeque<_> = vec.into_iter().collect();
|
//! let buf: VecDeque<_> = vec.into_iter().collect();
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
|
|
|
@ -2172,7 +2172,7 @@ mod use_keyword {}
|
||||||
/// i.next().unwrap_or_else(I::Item::default)
|
/// i.next().unwrap_or_else(I::Item::default)
|
||||||
/// }
|
/// }
|
||||||
///
|
///
|
||||||
/// assert_eq!(first_or_default(vec![1, 2, 3].into_iter()), 1);
|
/// assert_eq!(first_or_default([1, 2, 3].into_iter()), 1);
|
||||||
/// assert_eq!(first_or_default(Vec::<i32>::new().into_iter()), 0);
|
/// assert_eq!(first_or_default(Vec::<i32>::new().into_iter()), 0);
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
|
|
|
@ -493,7 +493,7 @@ pub fn exclude_should_panic_option() {
|
||||||
#[test]
|
#[test]
|
||||||
pub fn exact_filter_match() {
|
pub fn exact_filter_match() {
|
||||||
fn tests() -> Vec<TestDescAndFn> {
|
fn tests() -> Vec<TestDescAndFn> {
|
||||||
vec!["base", "base::test", "base::test1", "base::test2"]
|
["base", "base::test", "base::test1", "base::test2"]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|name| TestDescAndFn {
|
.map(|name| TestDescAndFn {
|
||||||
desc: TestDesc {
|
desc: TestDesc {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue