🔮
Rust学习笔记
  • 介绍
  • Rust入门
    • 安装使用
    • Cargo初用
    • 其他工具
    • 实例1
    • vim安装及配置
    • rust analyzer速度慢
  • rust基础
    • 关键字
    • 模块module和测试
    • 变量-数据类型
      • 浮点数
      • NaN
      • 有理数和复数
    • 单元类型
    • 字符串-切片-数组-元组-hashpmap
    • 结构体和枚举
    • 控制语句
    • 模式匹配match
    • 函数-method 闭包 迭代器
    • File操作
  • Rust进阶
    • 所有权
      • 所有权基础
      • 如何让函数使用某个值,但不获得其所有权
      • 切片
    • Rust VS C
    • 函数指针
  • Q&A
    • Rust的宏
    • cargo expand
    • web server
    • cargo watch使用
    • lib分类
    • cargo源
  • 参考
    • 博客
    • 项目
  • rust内存泄露
  • 智能指针
  • Tauri类似electron的框架
  • Tokio包使用
  • Rust wasm介绍
  • 多线程
    • C语言
  • Golang语言
    • 项目
  • Java
  • Javascript
Powered by GitBook
On this page
  • 数据类型
  • 变量
  1. rust基础

变量-数据类型

数据类型

四个标量类型:整数、浮点数、布尔值及字符

  • 数值类型: 有符号整数 (i8, i16, i32, i64, isize)、 无符号整数 (u8, u16, u32, u64, usize) 、浮点数 (f32, f64默认)、以及有理数、复数

  • 字符串:字符串字面量和字符串切片 &str

  • 布尔类型: true和false

  • 字符类型: 表示单个 Unicode 字符,存储为 4 个字节

  • 单元类型: 即 () ,其唯一的值也是 ()

  • 复合类型:元组 (tuple)和数组 (array)

长度固定,但是数组里面的元素类型需要一样

数组没有Vector灵活,Vector由标准库提供,Vector长度可以改变。

    const MAX_POINTS: u32 = 100000;

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

    println!("{}",guess);

    let x = 2.0;
    let y:f32 = 3.0;


    let tup: (i32,f64,u8) = (500,6.4,1);
    let (x, y, z) = tup;
    let x: (i32,f64,u8) = (500,6.4,1);

    let five_hundred = x.0;
    let six_point_four = x.1;
    let one = x.2;

    let a = [1, 2, 3, 4, 5];
    let first = a[0]; 
    let second = a[1];

    let a:[i32;5] = [1,2,3,4,5];

mut可变,常量const,MAX_POINTS

不能用mut关键字来修饰一个常量。常量不仅是默认不可变的,它还总是不可变的。

未使用的变量可用“_”开头。

变量

Rust 的变量在默认情况下是不可变的 ,可以通过 mut 关键字让变量变为可变的 。

fn main() {
    let x = 5;
    println!("The value of x is: {}", x);
    x = 6; // 错误
    println!("The value of x is: {}", x);
}

使用下划线开头忽略未使用的变量

Rust 允许声明相同的变量名,在后面声明的变量会遮蔽掉前面声明

fn main() {
    let x = 5;
    // 在main函数的作用域内对之前的x进行遮蔽
    let x = x + 1;

    {
        // 在当前的花括号作用域内,对之前的x进行遮蔽
        let x = x * 2;
        println!("The value of x in the inner scope is: {}", x);
    }

    println!("The value of x is: {}", x);
}
// 结果为12,6

mut 声明的变量,可以修改同一个内存地址上的值,并不会发生内存对象的再分配,性能要更好。

Previous模块module和测试Next浮点数

Last updated 2 years ago