Learning Notes
Home
Home
  • Guide
    • Shortkeys
    • Commands
  • Cpp
    • Basic
    • Scope, Duration, and Linkage
    • Pointers(1)
    • Pointers(2)
  • Rust Learning
    • 1.Number Types
    • 2.Ownership
    • 3.Struct
    • 4.Enum
    • 5.Package-management
    • 6.Vector
    • 7.Error handle
    • 8.Trait 泛型
    • 9.Life time
    • 10.Test
    • 11.Minigrep
    • 12.Closure 闭包
    • 13.Smart pointer 智能指针
    • 14.Fearless concurrency 无畏并发
  • Quantum Computing
    • Basic computing and quantum computing Theory
    • Teleportation
    • QKD and QFT
    • QFE and Shor's algorithm
    • QAOA
    • Quantum algorithms
    • Week 11
  • Statical Machine Learning
    • Bayesian Linear Regression
    • Linear regression and logistic regresion
    • Bais
    • SVM, Kernel Methods
    • Precepction and Artificial Neural Network
    • Cross validation, experts learning, MAB
    • Bayesian inference
    • GMM-EM
    • final
  • Software Project Management
    • Lecture
    • Revision
  • AI-planning
    • Classical planning
    • MDP and reinforcement learning
    • Game theory and final recap

Rust 基本数据类型

Rust 是静态类型语言,编译器在编译时就必须知道所有变量的类型。

  • Rust 默认是不可变的,使用mut关键字可以声明可变变量。
let x = 5;
x = 6; //error
let mut x = 5;
x = 6; //ok

Shadowing

可以用相同的名字声明新的变量,此时新的变量会覆盖之前的变量,这种情况叫做变量的shadowing。

let x = 5;
let x = x + 1;

使用let声明的同名新变量,它的类型可以与之前的变量不同。

let spaces = "   ";
let spaces = spaces.len();

Data Types

rust 是静态类型语言,编译器在编译时就必须知道所有变量的类型。

let guess: u32 = "42".parse().expect("Not a number!");

Expression and Argument

表达式返回一个值,语句不返回值。 这里大括号里面的就是一个表达式,它返回一个值。

    let y = {
        let x = 3;
        x + 1 //expression
    };

这里的就是statement,它返回空tuple。

    let y = {
        let x = 3;
        x + 1; //statement
    };

流控制

if else 是表达式,所以可以用在let语句的右边。

    let number = if condition { 5 } else { 6 };

if else 一般语法:

    let number = 3;
    if number < 5 {
        println!("condition was true");
    } else {
        println!("condition was false");
    }

loop 关键字告诉Rust反复执行一块代码,直到你喊停 loop 是一个无限循环,可以用break跳出循环。

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

另外一种循环是每次执行循环体前都判断一次条件

while 循环为这种模式而生

    let mut number = 3;
    
    while number != 0 {
        println!("{}!", number);
        number -= 1;
    }
    println!("LIFT OFF!!!");

遍历集合使用for循环更简洁紧凑,它可以针对集合中的每个元素来执行一些代码

    let a = [10, 20, 30, 40, 50];
    for element in a.iter() {
        println!("the value is: {}", element);
    }

Range: 指定一个开始数字和一个结束数字,Range可以生成他们之间的数组(不含结束)

    for number in (1..4).rev() {
        println!("{}!", number);
    }
    println!("LIFT OFF!!!");
Last Updated:
Contributors: pingzhihe
Next
2.Ownership