diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
commit | 64d98f8ee037282c35007b64c2649055c56af1db (patch) | |
tree | 5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs | |
parent | Adding debian version 1.67.1+dfsg1-1. (diff) | |
download | rustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs')
-rw-r--r-- | src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs b/src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs deleted file mode 100644 index 86fd37e78..000000000 --- a/src/test/ui/moves/moves-based-on-type-no-recursive-stack-closure.rs +++ /dev/null @@ -1,35 +0,0 @@ -// Tests correct kind-checking of the reason stack closures without the :Copy -// bound must be noncopyable. For details see -// https://smallcultfollowing.com/babysteps/blog/2013/04/30/the-case-of-the-recurring-closure/ - -struct R<'a> { - // This struct is needed to create the - // otherwise infinite type of a fn that - // accepts itself as argument: - c: Box<dyn FnMut(&mut R, bool) + 'a> -} - -fn innocent_looking_victim() { - let mut x = Some("hello".to_string()); - conspirator(|f, writer| { - if writer { - x = None; - } else { - match x { - Some(ref msg) => { - (f.c)(f, true); - //~^ ERROR: cannot borrow `*f` as mutable more than once at a time - println!("{}", msg); - }, - None => panic!("oops"), - } - } - }) -} - -fn conspirator<F>(mut f: F) where F: FnMut(&mut R, bool) { - let mut r = R {c: Box::new(f)}; - f(&mut r, false) //~ ERROR borrow of moved value -} - -fn main() { innocent_looking_victim() } |