diff options
| author | Santiago Pastorino <spastorino@gmail.com> | 2024-12-11 18:00:56 -0300 |
|---|---|---|
| committer | Santiago Pastorino <spastorino@gmail.com> | 2025-03-06 17:58:32 -0300 |
| commit | dcdfd551f05073ececfa437be002ce7804b31c91 (patch) | |
| tree | 813604b622c9bb09c15e1724a6cebfd9d340b53d /tests/ui/ergonomic-clones | |
| parent | 57cb498989ac29fbe9938ed2f4a31a3eab6850dc (diff) | |
| download | rust-dcdfd551f05073ececfa437be002ce7804b31c91.tar.gz rust-dcdfd551f05073ececfa437be002ce7804b31c91.zip | |
Add UseCloned trait related code
Diffstat (limited to 'tests/ui/ergonomic-clones')
| -rw-r--r-- | tests/ui/ergonomic-clones/closure.rs | 30 | ||||
| -rw-r--r-- | tests/ui/ergonomic-clones/dotuse.rs | 9 |
2 files changed, 33 insertions, 6 deletions
diff --git a/tests/ui/ergonomic-clones/closure.rs b/tests/ui/ergonomic-clones/closure.rs index 340b9ece50e..19ef6f4e13d 100644 --- a/tests/ui/ergonomic-clones/closure.rs +++ b/tests/ui/ergonomic-clones/closure.rs @@ -3,6 +3,9 @@ #![feature(ergonomic_clones)] +use std::clone::UseCloned; +use std::future::Future; + fn ergonomic_clone_closure_no_captures() -> i32 { let cl = use || { 1 @@ -10,7 +13,7 @@ fn ergonomic_clone_closure_no_captures() -> i32 { cl() } -fn ergonomic_clone_closure_with_captures() -> String { +fn ergonomic_clone_closure_move() -> String { let s = String::from("hi"); let cl = use || { @@ -19,14 +22,31 @@ fn ergonomic_clone_closure_with_captures() -> String { cl() } -fn ergonomic_clone_async_closures() -> String { +#[derive(Clone)] +struct Foo; + +impl UseCloned for Foo {} + +fn ergonomic_clone_closure_use_cloned() -> Foo { + let f = Foo; + + let f1 = use || { + f + }; + + let f2 = use || { + f + }; + + f +} + +fn ergonomic_clone_async_closures() -> impl Future<Output = String> { let s = String::from("hi"); async use { s - }; - - s + } } fn main() {} diff --git a/tests/ui/ergonomic-clones/dotuse.rs b/tests/ui/ergonomic-clones/dotuse.rs index 928c27296b1..4bab400fef2 100644 --- a/tests/ui/ergonomic-clones/dotuse.rs +++ b/tests/ui/ergonomic-clones/dotuse.rs @@ -2,11 +2,18 @@ #![feature(ergonomic_clones)] +use std::clone::UseCloned; + fn basic_test(x: i32) -> i32 { x.use.use.abs() } -fn do_not_move_test(x: String) -> String { +#[derive(Clone)] +struct Foo; + +impl UseCloned for Foo {} + +fn do_not_move_test(x: Foo) -> Foo { let s = x.use; x } |
