所有权与函数 fn main() { let s = String::from("hello"); takes_ownership(s); //s的值移动到函数里 let x = 5; //x进入作用域 makes_copy(x); //x应该移动到函数里,但是i32是copy,所以后面可以继续使用x. println!("x is {}",x); //下面这句编译会出错, ^ value borrowed here after move //println!(&q…
这个有意思,指针解释获新生!!! fn main() { let mut s = String::from("hello"); s.push_str(", world!"); println!("{}", s); let s1 = String::from("hello"); let (s2, len) = calculate_len(s1); println!("The len of '{}' is {}.&quo…
感觉Rust官方的学习文档里关于ownship,borrow和lifetime介绍的太简略了,无法真正理解这些语法设计的原因以及如何使用(特别是lifetime).所以找了一些相关的blog来看,总结一下,以备以后参考. 起因 Rust想要解决的问题是在无GC的情况下安全地管理资源.这点并不容易实现,但不是一点思路都没有.比如,有一个Java程序: public void foo() { byte[] a = new byte[10000000]; a = null; byte[] c = ne…