diff options
| author | Kivooeo <Kivooeo123@gmail.com> | 2025-06-30 00:05:58 +0500 |
|---|---|---|
| committer | Kivooeo <Kivooeo123@gmail.com> | 2025-07-01 15:16:56 +0500 |
| commit | da5c6395dad7c5be33f842c3660ae2f6af287f3a (patch) | |
| tree | ecdab72d5ce57382b83a6abcce3e2a693ba5a192 /tests/ui/closures/closure-clone-requires-captured-clone.rs | |
| parent | 4feb5de34c1e41da0c10e149e243a25a6eafcd17 (diff) | |
| download | rust-da5c6395dad7c5be33f842c3660ae2f6af287f3a.tar.gz rust-da5c6395dad7c5be33f842c3660ae2f6af287f3a.zip | |
cleaned up some tests
Diffstat (limited to 'tests/ui/closures/closure-clone-requires-captured-clone.rs')
| -rw-r--r-- | tests/ui/closures/closure-clone-requires-captured-clone.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/tests/ui/closures/closure-clone-requires-captured-clone.rs b/tests/ui/closures/closure-clone-requires-captured-clone.rs index 976e3b9e81c..80938e50b67 100644 --- a/tests/ui/closures/closure-clone-requires-captured-clone.rs +++ b/tests/ui/closures/closure-clone-requires-captured-clone.rs @@ -1,13 +1,19 @@ -//@compile-flags: --diagnostic-width=300 -// Check that closures do not implement `Clone` if their environment is not `Clone`. +//! Test that closures only implement `Clone` if all captured values implement `Clone`. +//! +//! When a closure captures variables from its environment, it can only be cloned +//! if all those captured variables are cloneable. This test makes sure the compiler +//! properly rejects attempts to clone closures that capture non-Clone types. -struct S(i32); +//@ compile-flags: --diagnostic-width=300 + +struct NonClone(i32); fn main() { - let a = S(5); - let hello = move || { - println!("Hello {}", a.0); + let captured_value = NonClone(5); + let closure = move || { + let _ = captured_value.0; }; - let hello = hello.clone(); //~ ERROR the trait bound `S: Clone` is not satisfied + closure.clone(); + //~^ ERROR the trait bound `NonClone: Clone` is not satisfied } |
