Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait CloneFn: Fn() {
- fn clone_erased(&self) -> Box<dyn CloneFn>;
- }
- impl<F: Fn() + Clone + 'static> CloneFn for F {
- fn clone_erased(&self) -> Box<dyn CloneFn> {
- Box::new(self.clone())
- }
- }
- fn foo(f: &dyn CloneFn) {
- f();
- let g = f.clone_erased();
- g();
- let h = g.clone_erased();
- h();
- }
- fn main() {
- use std::sync::Arc;
- let a = Arc::new(());
- foo(& move || { println!("{}", Arc::strong_count(&a)) })
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement