【🔥前端学rust】基础数据类型

79 阅读5分钟

前言

在之前我们已经学习了如何为 rust 代码写注释以及如何在 rust 代码中进行打印。详细内容可以参看上一篇文章

# 【🔥前端学rust】花式println和注释

今天开始我们将正式进入 rust 这么语言的学习中。首先我们开始学习 rust 的基本数据类型。我们知道在 javascript 中数据类型有undefinednull、布尔值(Boolean)、字符串(String)、数值(Number)、大整数(BigInt)、Symbol、对象(Object),除对象(Object)外其它数据类型都是基础数据类型。同样的 rust 有哪些基础的数据类型呢?带着这个问题我们开始吧。

变量的声明

JavaScript 中变量的声明有三种方式 var let const,其中 var 已经不推荐使用了。在 rust 中变量声明有两种方式 let const

let

rust 中,变量声明可以通过 let 关键字来进行。rust 是一种静态类型语言,但通常可以推断出变量的类型,因此在大多数情况下不需要显式指定类型。以下是几种常见的变量声明方式:

  1. 无类型的变量声明
let x = 5;           // 推断类型为 i32
let y = "Hello";     // 推断类型为 &str
  1. 显式类型的变量声明
let x: i32 = 5;         // 明确指定类型为 i32
let y: &str = "Hello";  // 明确指定类型为 &str
  1. 可变变:在 rust 中,变量默认是不可变的。如果需要声明一个可变变
let mut z = 5;       // 可变变量
z = 10;              // 修改变量值
  1. 解构赋值:可以通过解构来同时声明多个变量
let (a, b) = (1, 2); // 同时声明 a 和 b

const

rust 中,常量使用 const 关键字声明,即不可改变的值。并且必须显式指定类型。这些值在编译时就已经确定,并且在程序运行时不可更改。

  1. 常量声明:常量在编译时确定,并且不能被修改。
const MY_CONSTANT: i32 = 100; // 声明一个常量 MY_CONSTANT

要注意的是,rust 的变量绑定是独特的,一旦一个变量被绑定到一个值,就不能更改绑定到另一个值(除非是可变变量)。此外,Rust有严格的生命周期和所有权系统,这意味着你不能在值的生命周期结束后继续使用它。

数值类型

JavaScript 中,数值类型既是 Number 不区分整型和浮点型。而在 rust 中明确区分这两种类型的。

let num = 7; // 整型
let number = 3.1415; // 浮点型

整型

整型用于存储整数值,分为有符号和无符号两种类型。

长度有符号无符号
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize
fn main() {
    // 整数类型
    let signed_int: i32 = 42;
    let unsigned_int: u32 = 42;

    println!("Signed int: {}, Unsigned int: {}", signed_int, unsigned_int);

    // 大小不同的整数类型
    let small_signed: i8 = 127;
    let large_unsigned: u64 = 18446744073709551615;

    println!("Small signed: {}, Large unsigned: {}", small_signed, large_unsigned);

    // 指针大小的整数类型
    let pointer_size_signed: isize = 100;
    let pointer_size_unsigned: usize = 100;

    println!("Pointer size signed: {}, Pointer size unsigned: {}", pointer_size_signed, pointer_size_unsigned);
}

浮点型

rust 提供两种浮点数类型,分别是单精度和双精度。

长度表示
32-bitf32
64-bitf64
fn main() {
    // 浮点数类型
    let single_precision: f32 = 3.14;
    let double_precision: f64 = 3.14159265359;
    println!("Single precision: {}, Double precision: {}", single_precision, double_precision);
}

布尔类型

rust 中,布尔类型用于表示真(true)和假(false)两种状态。布尔类型在 rust 中由关键字 bool 表示。它主要用于条件判断和其他逻辑运算。

fn main() {
    // 声明布尔变量
    let t: bool = true;
    let f: bool = false;

    // 输出布尔变量的值
    println!("t = {}, f = {}", t, f);

    // 条件判断
    if t {
        println!("t is true");
    } else {
        println!("t is false");
    }

    // 逻辑运算
    let result_and = t && f; // 结果为 false
    let result_or = t || f;  // 结果为 true
    let result_not = !t;     // 结果为 false

    println!("result_and = {}, result_or = {}, result_not = {}", result_and, result_or, result_not);
}

字符类型

rust 中,字符类型是 char,它主要用于表示 Unicode 字符。char类型是一个固定大小的值,占用4个字节(32位),以单引号括定义,这使得它能够表示 Unicode 标准中的任何字符,包括字母、数字、标点符号、符号以及各种其他语言的字符。

fn main() {
    // 声明并初始化字符变量
    let letter: char = 'A';
    let number: char = '1';
    let symbol: char = '$';
    let emoji: char = '😊';

    // 打印字符变量
    println!("Letter: {}", letter);
    println!("Number: {}", number);
    println!("Symbol: {}", symbol);
    println!("Emoji: {}", emoji);

    // 转义序列
    let newline: char = '\n';
    let tab: char = '\t';

    println!("Newline: {:?}", newline); // 使用 {:?} 显示原始字符
    println!("Tab: {:?}", tab);
}

总结

  • 整数类型i8i16i32i64i128isizeu8u16u32u64u128usize
  • 浮点数类型f32f64
  • 字符类型char
  • 布尔类型bool

这些基本类型构成了 rust 编程的基础,是 rust 语言中的原子类型,它们不能被分解为更小的部分。了解它们的特点和用法对于编写高效可靠的程序非常重要。