summaryrefslogtreecommitdiffstats
path: root/tests/ui/borrowck/issue-62387-suggest-iter-mut-2.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/borrowck/issue-62387-suggest-iter-mut-2.rs')
-rw-r--r--tests/ui/borrowck/issue-62387-suggest-iter-mut-2.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/ui/borrowck/issue-62387-suggest-iter-mut-2.rs b/tests/ui/borrowck/issue-62387-suggest-iter-mut-2.rs
new file mode 100644
index 000000000..2d0b837a9
--- /dev/null
+++ b/tests/ui/borrowck/issue-62387-suggest-iter-mut-2.rs
@@ -0,0 +1,36 @@
+// run-rustfix
+#![allow(unused_mut)]
+#![allow(dead_code)]
+use std::path::PathBuf;
+
+#[derive(Clone)]
+struct Container {
+ things: Vec<PathBuf>,
+}
+
+impl Container {
+ fn things(&mut self) -> &[PathBuf] {
+ &self.things
+ }
+}
+
+// contains containers
+struct ContainerContainer {
+ contained: Vec<Container>,
+}
+
+impl ContainerContainer {
+ fn contained(&self) -> &[Container] {
+ &self.contained
+ }
+
+ fn all_the_things(&mut self) -> &[PathBuf] {
+ let mut vec = self.contained.clone();
+ let _a =
+ vec.iter().flat_map(|container| container.things()).cloned().collect::<Vec<PathBuf>>();
+ //~^ ERROR cannot borrow `*container` as mutable, as it is behind a `&` reference
+ unimplemented!();
+ }
+}
+
+fn main() {}