-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Description
I propose to add closure-level inline constants. For example the following code
let closeure_uuid = Uuid::new_v4();
let lambda = || {
println!("Execution UUID {}",Uuid::new_v4());
println!("Closure UUID {}",closeure_uuid);
};
lambda ();
lambda ();
It could be rewritten as
let lambda = || {
println!("Execution UUID {}",Uuid::new_v4());
println!("Closure UUID {}",cc{Uuid::new_v4())});
};
lambda ();
lambda ();
with a new cc keyword similar to constant. This would have similar advantages as inline_const rust-lang/rust#104087. Use cases:
Finer control on what is getting moved inside the lambda. For example
cc{very_larnge_vector.iter().min()}
or
cc{struct.field.other_filed}
More ergonomic dealing with ref counting. Example:
cc{button.clone()}.enable();
Those expressions should be executed when the closure is created and dropped when the closure is dropped.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Fields
Give feedbackNo fields configured for issues without a type.