//@ check-pass #![feature(ergonomic_clones)] #![allow(incomplete_features)] use std::clone::UseCloned; use std::future::Future; fn ergonomic_clone_closure_no_captures() -> i32 { let cl = use || { 1 }; cl() } fn ergonomic_clone_closure_move() -> String { let s = String::from("hi"); let cl = use || { s }; cl() } #[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_closure_copy() -> i32 { let i = 1; let i1 = use || { i }; let i2 = use || { i }; i } fn main() {}