3 ms·
What if you want to move some things, but copy others? e.g. auto shared = std::make_shared<MySharedType>(...); auto unique = std::make_unique<MyOwnedType>
by hendzen 10y ago
What if you want to move some things, but copy others?
e.g.
auto shared = std::make_shared<MySharedType>(...);
auto unique = std::make_unique<MyOwnedType>(...);
function_that_accepts_lambda([shared, u = std::move(unique)] {
shared->foo(...); u->bar(...);
});
// Outer scope can still use shared.
shared->foo(....);
- vvanders 10y agoIf the type implements Copy they'll be implicitly copied when moved into the Rust closure(I think). Or you can declare a scope var and clone() manually.
- steveklabnik 10y agoI am 99% sure this is identical: let on_heap = Box::new(...); let shared = Arc::new(...); let s = shared.clone(); function_that_accepts_lambda(move || { on_heap.bar(); s.foo(); }); We have to make the extra s binding. Also, my sibling is correct that Copy types will just be copied, not moved.