rust学习------[day1]环境搭建以及基础概念的介绍

rust环境搭建

编译器的安装

前提是使用vpn,在ubuntu中执行以下命令

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

source ~/.cargo/env

替换cargo源

在.cargo目录中创建config文件,内容如下:

[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"

cargo的使用

cargo new [project_name]
cargo build
cargo run

引用别的库的方法

在Cargo.toml文件中[dependencies]这一项中添加自己需要的库

CommonProgrammingConcepts

variables

  • 基本原则:

    1. 使用let创建一个变量
    2. 不能对一个immutable variable赋值两次
    3. 声明变量时,添加mut修饰,就可以多次赋值。
  • immutable variable与constants的区别

    1. 声明方式不同,immutable variable直接由let声明;constants由const关键字声明,必须要指明常量的类型
    2. constants不能是表达式或者是函数返回值
    3. let不能声明全局变量
  • shadowing(覆盖)
    多次使用let,上次的值会被最新的值覆盖,这里就有个疑问了,既然要修改变量为什么不用mut修饰。

    1. 原因是有些情况我们希望在对变量做了一些操作之后就不修改它的值了,就需要用到shadowing了。
    2. 使用shadowing的话我们可以修改变量的类型,类似于重新声明了一个新类型的变量,使用起来比mut方便

basic types

  • Scalar Types

    • Integer Types
    LengthSignedUnsigned
    8-biti8u8
    16-biti16u16
    32-biti32u32
    64-biti64u64
    128-biti128u128
    archisizeusize
    • Floating-Point Types

      f32和f64,如果不声明,默认是f64类型

    • Numeric Operations

      与其他语言类似

    • The Boolean Type

    • The Character Type

    The Boolean Type和The Character Type与c语言类似

  • Compound Types

    • The Tuple Type
    fn main() {
        /* 声明方法,也可以缺省类型声明 */
        // let tup = (500, 6.4, 1);
        let tup: (i32, f64, u8) = (500, 6.4, 1);
        
        /* 访问tuple内的元素 */
        let five_hundred = x.0;
    
        let six_point_four = x.1;
    
        let one = x.2;
    }
    
    • The Array Type
    fn main() {
        /* 缺省声明 */  
        let a = [1, 2, 3, 4, 5];
        /* 完整声明 */
        let a: [i32; 5] = [1, 2, 3, 4, 5];
        /* 特殊 */
        //let a = [3, 3, 3, 3, 3];与下面的语句作用一样
        let a = [3; 5];
    
    
        let first = a[0];
        let second = a[1];
    }
    

functions

定义函数是由fn关键字开始

  • 传参

    与所有的静态类型语言类似,形参需要指定类型,实参与形参类型保持一致

函数体中包含的声明(Statements)和表达式(Expressions)

rust是一种基于表达式的语言。下面就介绍一下Statements和Expressions不同的地方:

  1. Statements没有返回值,Expression有返回值
  2. 加了分号应该就算Statements了
  • 返回值

    使用->指定函数的返回值类型

comments

使用双斜杠 //

control flow

  • if expressions

    1. if关键字后面跟的是一个expression
    2. if语句的花括号中可以是Statements也可以是Expressions
    3. 在let语句中使用if时,要注意保证花括号中的数据类型保持一致
  • loop

    1. loop语句相当于死循环,使用break跳出循环
    2. loop是可以有返回值的,跟在break后面就可以了

    例子:

      fn main() {
          let mut counter = 0;
    
          let result = loop {
              counter += 1;
    
              if counter == 10 {
                  break counter * 2;
              }
          };
    
          println!("The result is {}", result);
      }
    
  • while

    fn main() {
        let a = [10, 20, 30, 40, 50];
        let mut index = 0;
    
        while index < 5 {
            println!("the value is: {}", a[index]);
    
            index += 1;
        }
    }
    
  • for

    fn main() {
        let a = [10, 20, 30, 40, 50];
    
        for element in a.iter() {
            println!("the value is: {}", element);
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值