• Cargo
      • 源文件扩展名通常为rs,用rustc编译,但使用cargo更好
      • cargo new —bin <名称> 创建一个应用程序
      • 编译:cargo build [—release]
      • 编译运行:cargo run
      • 配置文件
        • cargo.toml 工程配置
        • cargo.lock 记录编译时各种依赖库的版本,保证编译可重现
    • 语法

      • 外部依赖
        • 引入:extern crate <名称>
        • 使用:use ::<类型名称>
      • 变量
        • let 定义变量,通常不指定类型,使用自动类型推导;如果要指定类型,在变量名后面加冒号和类型名称
        • 默认为不可变的(immutable),可使用mut修饰表示可变(muttable)
      • 强大的match```rust match guess.cmp(&secret_number){
        1. Ordering::Less => println!("小了"),
        2. Ordering::Greater => println!("大了"),
        3. Ordering::Equal => {
        4. println!("猜对了");
        5. break;
        6. }
        } ```
    • 源代码```rust

    / 引入外部依赖需要extern crate和use两个语句 / extern crate rand;

    use std::io; use std::cmp::Ordering; use rand::Rng;

    fn main() {

    1. println!("----- 猜数游戏 -----");
    2. // let定义变量,默认为不可变的(immutable)
    3. let secret_number = rand::thread_rng().gen_range(1,101);
    4. loop{
    5. println!("输入猜测值: ");
    6. // 用mut明确说明变量值可修改
    7. let mut guess = String::new();
    8. // io::stdin() 返回 Stdin 实例
    9. // read_line() 函数读取一行
    10. // &mut 表示引用可变的变量
    11. // read_line() 的返回值为Result类型,是一个枚举,通常的值有OK和Err
    12. // Result 类型的 expect() 函数在值为 Err 的时候 panic
    13. // 导致程序退出
    14. io::stdin().read_line(&mut guess).expect("读取行失败");
    15. // 允许变量遮盖(shadown)
    16. // String 类型的 trim() 方法去除头尾空格
    17. // parse() 解析字符串到数,可返回多种类型,所以需要指定类型
    18. // let mut guess: u32 = match guess.trim().parse().expect("请输入一个数")
    19. let guess: u32 = match guess.trim().parse(){
    20. Ok(num) => num,
    21. Err(_) => continue,
    22. };
    23. println!("你的猜测: {}",guess);
    24. // match的功能很强大,类似switch
    25. match guess.cmp(&secret_number){
    26. Ordering::Less => println!("小了"),
    27. Ordering::Greater => println!("大了"),
    28. Ordering::Equal => {
    29. println!("猜对了");
    30. break;
    31. }
    32. }
    33. }

    } ```