Rust学习一 初步认识rust

rust的安装,环境搭建,初步了解rust

Posted by rpl on February 4, 2020

通过此链接查看rust学习系列的其他文章

一 安装

  1. 命令行安装 curl –proto ‘=https’ –tlsv1.2 https://sh.rustup.rs -sSf | sh

  2. 查看版本 rustc —version

  3. 更新 rustup update

  4. 卸载 rustup self uninstall

二 Hello World

  1. xxx.rs rs文件是rust的文件格式, linux/macos 下 可执行文件是 xxx , windows是xxx.exe

  2. fn main() {} 程序入口函数

  3. println!(“Hello world”); println! 是rust的宏命令 ; 表示此代码结束

  4. 编译 rustc xxx.rs

三 Cargo

cargo是rust编译和包管理工具, 安装rust时已安装cargo

  1. 查看 cargo版本: cargo —version

  2. cargo 新建项目: cargo new 项目名

  3. cargo新建项目时,初始化里一个新的git仓库包含.git和.gitignore文件。 如果不需要git 使用 cargo new —vcs=none xxx

  4. cargo.toml文件是项目的全局配置文件
    1
    2
    3
    
     [package] 标头配置了工程的基本信息
        
     [dependencies] 会指明项目所有的依赖包
    
  5. cargo build 编译项目,并生成可执行文件

  6. cargo run 运行项目。 如果没有编译,会先编译再运行

  7. cargo check 快速检查代码以确保能通过编译, 但他不会编译生成可执行文件。 cargo check要比cargo bulid快更多。

四 小项目 guessing game

  1. use std::io; 使用标准库里的io包。 use声明 std是标准库 io是标准库里的控制输入输出的包 use rand::Rng; 使用第三方包, Rng(a, b)函数生成[a, b)范围内的整数随机数, 左闭右开 use std::cmp::Ordering;

  2. letmut geuss = String::new(); let 声明声明一个 mut 可变变量 guess , 将一个空字符赋值给guess。
  3. let foo = 5; rust的变量默认是不可变的, 可变用 mut声明
  4. io:: std().read_line(&mut guess).expect(“Falied to read line”);

  5. 循环体
    1
    2
    3
    4
    
     loop{ 
         continue; 
         break; 
     }
    
  6. 将guess变量的类型由String转为u32 无符号的32位整形
    1
    2
    3
    4
    
     let guess: u32 = match guess.trim().parse(
         Ok(num) => num,
         Err(_) => continue,
     ); 
    
  7. 比较两个数的大小
    1
    2
    3
    4
    5
    6
    7
    
     match guess.cmp(&secret_number) {
         Ordering::Less => println!("Too Small"),
         Ordering::Greater => println!("Too big"),
         Ordering::Equal => {
             println!("You win, the secret number is {}", secret_number);
         }
     } 
    

五 Cargo 国内镜像源配置

  1. open /Users/rpl/.cargo

  2. vim config:

    1
    2
    3
    4
    5
    6
    
     [source.crates**-**io]
     registry **=** "https://github.com/rust-lang/crates.io-index"
     replace**-**with **=** 'ustc'
        
     [source.ustc]
     registry **=** "git://mirrors.ustc.edu.cn/crates.io-index"