Rust从0️⃣入门(1)

210 阅读2分钟

Mac安装rust环境

  1. 安装:curl https://sh.rustup.rs -sSf | sh
  2. 编译:source $HOME/.cargo/env
  3. rust版本查看:rustc --version
  4. cargo安装包版本查看:cargo --version

语法基础

  • hello word
fn main() {
    let s = "hello word!";
    println!("{}",s);
}
  • 局部变量使用let定义
  • 在rus中,声明对象时只读的(默认),如下图就会报错
    • 此时的x是只读的 图片.png
  • 如果要是想实现如上图的思路那么必须要使用mut
fn main() {
    let mut s = 5;
    s = 10;
    print!("{}",s);
}
  • 也可这样赋值

图片.png

  • 也可以先声明再赋值
fn main() {
    let x: i32;
    x = 1;
    println!("{}",x);

}
  • 针对下面情况,x不属于被赋值,而是重新定义变量
fn main() {
    let x = 1;
    let x = "new";
    println!("{}",x);
}
  • rust np之处
    • 实现类型推导
    • 编译器知道了x的类型是u8类型
fn main() {
    let x = 5u8;
    let mut vec = Vec::new();
    vec.push(x);

    println!("{:?}",vec);   // 输出 5
}
  • 类型别名
    • 可以用 type关键字给同一个类型起个别名
fn main() {
   let x : Age = 20;   // x为Age类型
   // 输出:20 years later: 40
   println!("20 years later: {}",add(x,20));
}

// Age 是u32类型
type Age = u32;

fn add(age: Age,year: u32) -> Age {
   age + year
}
  • 一些基础类型
fn main() {
    let a : bool = true;
    let b : char = '❤';

    let varl : i32 = 32;     // 十进制
    let var2 : i32 = 0xFF;   // 0x十六进制
    let var3 : i32 = 0o55;   // 0o八进制
    let var4 : i32 = 0b1001;  // 0b二进制表示

    let f1 = 1.234;
    let f2 = 1E+2;   // 科学计数法 输出100
    
    println!("{}",f2);
}
  • 强转类型

    • 下面这种是报错的
    • 因为rust必须要显式的强转换类型 图片.png
  • 下面这种显式的才是正确的做法

fn main() {
    let v1 : i8 = 41;
    let v2 : i16 = v1 as i16;

    println!("{}",v2);  // 输出41
}