Does a move result in a copy of the involved data on the stack, while all references to the heap are retained? The following example seems to indicate that this is the case:
use std::sync::{Arc};
struct A { v: Vec<u32> }
fn main() {
let a = A { v: vec![42] };
println!("{:p} {:p}", &a.v, &a.v[0]);
let a_moved = a;
println!("{:p} {:p}", &a_moved.v, &a_moved.v[0]);
let arc_a_moved = Arc::new(a_moved);
println!("{:p} {:p}", &arc_a_moved.clone().v, &arc_a_moved.clone().v[0]);
}