工具
rustup
https://rustup.rs/
https://play.rust-lang.org/
- 没有GC
- 对象默认是移动语义。在特殊情况下也支持复制语义。但是不管是移动还是复制,变量之间不能共享同一份堆上的数据
- 要想共享对象的数据,需要通过引用来借用。同一作用域内同时只能有一个可变的引用。没有可变的引用时,支持多个不变引用共享。
- 变量绑定默认是不变的,可变的需要加mut关键字说明。引用也是如此。
- 较大作用域的引用不能引用活得比它短的小作用域内的对象,反之可以。
fn main() { //Rust 是强类型语言,但具有自动判断变量类型的能力 let number = 3; let mut m_num = 4; println!("number{{0}}={0},m_num={1}",number,m_num); m_num=555; println!("m_num={0}",m_num); let x_num=2; let x_num=x_num+1; let x_num=x_num*2; println!("x_num{{0}}={0}",x_num); // let a = 2.0; // f64 let b: f32 = 3.0; // f32 let _c: [i32; 5] = [1, 2, 3, 4, 5]; // c 是一个长度为 5 的 i32 数组 let _d = [3; 5]; // 等同于 let d = [3, 3, 3, 3, 3]; println!("{0},{1}",a,b); // fn five() -> i32 { 5 } println!("five()={0}",five()); println!("add()={0}",add(33,2)); // let mut v = vec![1,2,3]; take(&mut v); println!("v{{3}}={}",v[3]); let _v2 = &v; let _v3 = &v;}fn take(v: &mut Vec<i32>){ v.push(4);}fn add(a: i32, b: i32) -> i32 { return a + b;}