Rust 数据类型

Rust 数据类型

概述

Rust 是一种系统编程语言,以其高性能、内存安全以及并发特性而著称。在 Rust 中,数据类型是构成变量和表达式的基石。正确理解和使用数据类型对于编写高效、安全的 Rust 程序至关重要。本文将详细介绍 Rust 中的各种数据类型,包括基本数据类型、复合数据类型以及高级数据类型。

基本数据类型

Rust 提供了丰富的基本数据类型,包括整数、浮点数、字符和布尔值。

整数

整数类型包括 i8, i16, i32, i64, i128u8, u16, u32, u64, u128。其中,i 表示有符号整数,u 表示无符号整数。整数的位数决定了其能表示的数值范围。

rust 复制代码
let num: i32 = 10;
let num2: u32 = 20;

浮点数

浮点数类型包括 f32f64f32 是单精度浮点数,而 f64 是双精度浮点数。

rust 复制代码
let num: f64 = 3.14;

字符

字符类型是 char,用于表示单个 Unicode 字符。

rust 复制代码
let ch: char = 'A';

布尔值

布尔值类型是 bool,表示真 (true) 或假 (false)。

rust 复制代码
let is_valid: bool = true;

复合数据类型

复合数据类型是由基本数据类型组合而成的,包括数组、向量、元组和结构体。

数组

数组是一组固定长度的元素序列。在 Rust 中,数组元素类型必须相同。

rust 复制代码
let nums: [i32; 5] = [1, 2, 3, 4, 5];

向量

向量是一个动态数组,可以存储不同类型的元素。

rust 复制代码
let vec: Vec<i32> = vec![1, 2, 3, 4, 5];

元组

元组是由多个元素组成的有序列表,元素类型可以不同。

rust 复制代码
let tuple: (i32, f64, char) = (1, 3.14, 'A');

结构体

结构体是一种自定义数据类型,可以包含多个字段。

rust 复制代码
struct Person {
    name: String,
    age: i32,
}

let person = Person {
    name: "Alice".to_string(),
    age: 25,
};

高级数据类型

Rust 还提供了一些高级数据类型,包括枚举、模式匹配、闭包和特质。

枚举

枚举是一种可以包含多个变体的数据类型。

rust 复制代码
enum Color {
    Red,
    Green,
    Blue,
}

let color = Color::Red;

模式匹配

模式匹配是一种在运行时检查变量类型和值的语法。

rust 复制代码
let x = 5;
match x {
    1 => println!("one"),
    2 => println!("two"),
    _ => println!("other"),
}

闭包

闭包是一种可以捕获环境变量的匿名函数。

rust 复制代码
let add_one = |x| x + 1;
let result = add_one(5);

特质

特质是一种定义共享行为的方法。

rust 复制代码
trait SayHello {
    fn say_hello(&self);
}

struct Greeting {
    name: String,
}

impl SayHello for Greeting {
    fn say_hello(&self) {
        println!("Hello, {}!", self.name);
    }
}

let greeting = Greeting {
    name: "Alice".to_string(),
};
greeting.say_hello();

总结

Rust 中的数据类型丰富多样,涵盖了基本数据类型、复合数据类型和高级数据类型。正确理解和使用这些数据类型对于编写高效、安全的 Rust 程序至关重要。本文介绍了 Rust 中的各种数据类型,希望对您有所帮助。

相关推荐
2601_966949657 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin7 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
滕州市燕猫虎计算机科技工作室个体工商户7 小时前
Java锁
java·开发语言
多加点辣也没关系8 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2338 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21038 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客8 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm
新时代牛马10 小时前
cyclictest 毛刺从哪来?从ftrace、latencytop、perf到IRQ/调度延迟定位
android·开发语言·python·kotlin
三84410 小时前
Java 模板注入(FreeMarker) · 02 · 模板引擎与 FreeMarker 语法
java·开发语言·web安全·freemarker
IvanCodes11 小时前
Python 基础语法(七):推导式与常见遍历写法
开发语言·python