blob: febed25b6a902e3722f8b92043d101ae926b3afb [file] [log] [blame]
// rustfmt-edition: 2018
#![feature(ergonomic_clones)]
mod closure_syntax {
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()
}
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 nested() {
let a = Box::new(Foo);
foo(use || { foo(use || { work(a) }) });
let x = use || { use || { Foo } };
let _y = x();
}
fn with_binders() {
for<'a> use || -> () {};
}
}
mod dotuse {
fn basic_test(x: i32) -> i32 {
x.use
.use
.abs()
}
fn do_not_move_test(x: Foo) -> Foo {
let s = x.use;
x
}
}