rust的变量看着和c的有点像但如同又不是齐全像

如下的测试例子,应用String模仿堆上的变量,usize模仿栈上的变量

堆上的内容move的时候是不挪动的例如 st3.v1.v.as_str() 始终是在一个地位
栈上的变量看似很像c中的指针,然而又不齐全是像 在rust中 st3和st3.v1和st3.v是三个指针,而这三个指针在move之后都会从新生成

move的操作看起来是 一个变量在栈上 挪动的时候是剖析所有成员都move一次 ,而子成员还有子成员也要迭代往下直到最初一层 在堆上调配一个新的指针 在栈上复制一份值

struct TestSt1 {    v: String,}struct TestSt2 {    v: usize,}struct TestSt3{    v1: TestSt1,    v2: TestSt2,}fn get_st() -> (TestSt1, TestSt2, TestSt3){    let st1 = TestSt1{        v:String::from("aaa"),    };    let st2 = TestSt2{        v:123,    };    let st3 = TestSt3{        v1:TestSt1{            v:String::from("bbb"),        },        v2:TestSt2{            v:321,        },    };    println!("p:{:p} {:p} {:p} {:p} {:p} {:p} {:p}",     &st1, &st2, &st3, &(st1.v), &(st2.v), &(st3.v1), &(st3.v2.v));    (st1, st2, st3)}fn main() {    let (st1, st2, st3) = get_st();    println!("p:{:p} {:p} {:p} {:p} {:p} {:p} {:p}",     &st1, &st2, &st3, &(st1.v), &(st2.v), &(st3.v1), &(st3.v2.v));}