about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorChayim Refael Friedman <chayimfr@gmail.com>2022-06-08 11:09:08 +0000
committerGitHub <noreply@github.com>2022-06-08 11:09:08 +0000
commit456f1ffe12062f99cf800dd20d81e12e4131cb69 (patch)
tree533dcf1135dd75a670cd294d9d8d7e71b66e8a78 /src/test
parent47aee31b2a89cb7de97d779869a30b046632b6af (diff)
downloadrust-456f1ffe12062f99cf800dd20d81e12e4131cb69.tar.gz
rust-456f1ffe12062f99cf800dd20d81e12e4131cb69.zip
Suggest using `iter()` or `into_iter()` for `Vec`
We cannot do that for `&Vec` because `#[rustc_on_unimplemented]` is limited (it does not clean generic instantiation for references, only for ADTs).
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/iterators/vec-on-unimplemented.rs4
-rw-r--r--src/test/ui/iterators/vec-on-unimplemented.stderr20
2 files changed, 24 insertions, 0 deletions
diff --git a/src/test/ui/iterators/vec-on-unimplemented.rs b/src/test/ui/iterators/vec-on-unimplemented.rs
new file mode 100644
index 00000000000..42b5d36bfad
--- /dev/null
+++ b/src/test/ui/iterators/vec-on-unimplemented.rs
@@ -0,0 +1,4 @@
+fn main() {
+    vec![true, false].map(|v| !v).collect::<Vec<_>>();
+    //~^ ERROR `Vec<bool>` is not an iterator
+}
diff --git a/src/test/ui/iterators/vec-on-unimplemented.stderr b/src/test/ui/iterators/vec-on-unimplemented.stderr
new file mode 100644
index 00000000000..afcce5c30ca
--- /dev/null
+++ b/src/test/ui/iterators/vec-on-unimplemented.stderr
@@ -0,0 +1,20 @@
+error[E0599]: `Vec<bool>` is not an iterator
+  --> $DIR/vec-on-unimplemented.rs:2:23
+   |
+LL |     vec![true, false].map(|v| !v).collect::<Vec<_>>();
+   |                       ^^^ `Vec<bool>` is not an iterator; try calling `.into_iter()` or `.iter()`
+   |
+  ::: $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
+   |
+LL | pub struct Vec<T, #[unstable(feature = "allocator_api", issue = "32838")] A: Allocator = Global> {
+   | ------------------------------------------------------------------------------------------------ doesn't satisfy `Vec<bool>: Iterator`
+   |
+   = note: the following trait bounds were not satisfied:
+           `Vec<bool>: Iterator`
+           which is required by `&mut Vec<bool>: Iterator`
+           `[bool]: Iterator`
+           which is required by `&mut [bool]: Iterator`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0599`.