工具
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;
}