Rust 基础语法指南 - 教程

news/2025/11/6 13:09:19/文章来源:https://www.cnblogs.com/gccbuaa/p/19196264

1. Rust 环境搭建

1.1 安装 Rust 工具链

Rust 的安装过程非常简单,主要通过 rustup 工具来完成。rustup 是 Rust 官方推荐的工具链管理器,它可以帮助我们轻松地安装、更新和切换不同版本的 Rust 编译器和相关工具。

首先,我们需要打开终端或命令行界面,执行官方提供的安装脚本来安装 rustup

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

这个命令会下载并运行 Rust 安装脚本,该脚本会自动检测您的操作系统,并安装相应的 rustup 工具。安装过程中会提示您确认安装,只需按照提示操作即可。

安装完成后,rustup 会成为我们管理 Rust 环境的主要工具。它提供了许多有用的命令来管理 Rust 版本:

  • rustup update 命令用于更新 Rust 到最新稳定版本
  • rustup toolchain list 显示已安装的所有工具链
  • rustup default stable 设置默认使用的工具链版本

除了基本的编译器外,rustup 还会自动安装以下重要组件:

  • rustc:Rust 编译器,负责将 Rust 代码编译成可执行文件
  • cargo:Rust 的包管理器和构建工具,是日常开发中最重要的工具之一
  • rustfmt:代码格式化工具,确保代码风格统一
  • clippy:代码检查工具,帮助发现潜在的问题和改进点

1.2 配置开发环境

安装完 Rust 后,我们需要验证安装是否成功并配置好开发环境。首先,我们可以检查 Rust 编译器的版本:

rustc --version

该命令会显示当前安装的 Rust 版本号,例如 rustc 1.70.0 (90c541806 2023-05-31)

同样,我们也应该检查 cargo 的版本:

cargo --version

为了获得更好的开发体验,强烈建议配置 IDE 插件支持。对于 Visual Studio Code 用户,推荐安装 rust-analyzer 扩展,它提供了强大的代码补全、语法高亮、错误检查等功能。其他编辑器如 IntelliJ IDEA 也有相应的 Rust 插件支持。

环境变量配置通常会在安装过程中自动完成,但有时可能需要手动配置。确保 ~/.cargo/bin 目录已经添加到系统的 PATH 环境变量中,这样就可以在任何位置使用 cargorustc 命令了。

1.3 创建第一个 Rust 项目

Rust 生态系统中,cargo 是核心的构建和包管理工具。它不仅能够管理项目的依赖关系,还能处理项目的构建、测试、文档生成等任务。

使用 cargo 创建新项目非常简单,只需要执行以下命令:

cargo new hello_world

这个命令会创建一个名为 hello_world 的新目录,其中包含完整的项目结构:

  • Cargo.toml:这是项目的配置文件,定义了项目的基本信息、依赖关系等
  • src/:源代码目录
    • main.rs:主程序文件,程序的入口点就在这里

Cargo.toml 文件采用 TOML 格式,包含了项目的基本配置信息:

[package]
name = "hello_world"
version = "0.1.0"
edition = "2021"
[dependencies]

默认情况下,新建的项目是一个二进制可执行项目。如果我们想要创建一个库项目,可以使用 --lib 参数:

cargo new --lib my_library

创建项目后,我们可以使用多种 cargo 命令来管理和构建项目:

  • cargo run:编译并运行项目,是最常用的命令之一
  • cargo build:只编译项目,生成可执行文件位于 target/debug/ 目录下
  • cargo build --release:编译优化后的发布版本,位于 target/release/ 目录下
  • cargo check:快速检查代码是否有语法错误,比完整编译更快
  • cargo test:运行项目中的单元测试

2. 基本语法概念

2.1 变量与可变性

Rust 的变量系统具有独特的特点,其中最显著的是变量默认不可变性和所有权系统。这种设计有助于在编译期防止数据竞争和其他常见错误。

在 Rust 中,我们使用 let 关键字来声明变量:

let x = 5;

这个声明创建了一个名为 x 的不可变变量,并将其初始化为值 5。一旦声明后,就不能修改 x 的值。尝试修改不可变变量会导致编译错误:

let x = 5;
// x = 6; // 这会导致编译错误

如果确实需要修改变量的值,我们必须显式地使用 mut 关键字来声明变量为可变:

let mut y = 10;
y = 15; // 合法,因为 y 是可变的

这种设计鼓励开发者写出更安全的代码,因为它强制我们在声明变量时思考是否真的需要修改它的值。

除了普通变量,Rust 还支持常量声明,使用 const 关键字:

const MAX_POINTS: u32 = 100_000;

常量有几个重要的特点:

  1. 必须在声明时指定类型
  2. 只能在编译时常量表达式中使用
  3. 在整个程序中都是全局有效的
  4. 命名约定通常使用全大写字母和下划线

2.2 数据类型系统

Rust 拥有丰富的类型系统,包括标量类型和复合类型两大类。

标量类型是最基本的数据类型,包括:

  • 整数类型:i8, i16, i32, i64, i128, isize(有符号)和 u8, u16, u32, u64, u128, usize(无符号)
  • 浮点类型:f32f64
  • 布尔类型:bool
  • 字符类型:char
let integer: i32 = 42;           // 32位有符号整数
let float: f64 = 3.14;           // 64位浮点数
let boolean: bool = true;        // 布尔值
let character: char = '';      // Unicode字符

复合类型包括元组和数组:

  • 元组可以包含不同类型的数据,长度固定
  • 数组包含相同类型的元素,长度也固定
let tuple: (i32, f64, char) = (42, 3.14, 'A');
let array: [i32; 5] = [1, 2, 3, 4, 5];

Rust 还具有强大的类型推断能力,大多数情况下不需要显式指定类型,编译器可以根据上下文推断出正确的类型。

2.3 函数定义与调用

函数是 Rust 程序的基本组成单元。使用 fn 关键字定义函数,函数名称遵循 snake_case 命名约定。

最基本的函数定义形式如下:

fn main() {

println!("Hello, world!");
another_function(5, 6);
}
fn another_function(x: i32, y: i32) {

println!("The value of x is: {}", x);
println!("The value of y is: {}", y);
}

函数参数必须声明类型,这有助于提高代码的清晰度和安全性。函数体由一系列语句和表达式组成,最后一行表达式的值会自动作为函数的返回值(如果没有显式使用 return 关键字)。

函数也可以有返回值,使用箭头语法指定返回类型:

fn five() -> i32 {

5
}

2.4 注释语法规范

Rust 提供了多种注释方式来帮助开发者编写清晰的代码文档。

行注释使用双斜杠 [//](file://D:\workspace\demo\1.txt),从当前位置到行末的所有内容都会被视为注释:

// 这是行注释
let x = 5; // 行注释也可以放在代码后面

块注释使用 /* */ 形式,可以跨越多行:

/*
这是块注释
可以跨越多行
*/

文档注释是 Rust 特有的功能,使用三斜杠 [///](file://D:\workspace\demo\1.txt) 或三斜杠块注释 / ** /,专门用于为函数、结构体等生成文档:

/// 这是文档注释,用于函数文档
/// 它会被包含在生成的文档中
fn example_function() {

//! 这是内部文档注释,用于模块或crate文档
}

3. 所有权系统

3.1 所有权概念

所有权系统是 Rust 最独特和最重要的特性之一,它在不使用垃圾回收的情

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/957699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

monorepo抽离shadcn和tailwind

最小可shadcn可初始化环境 一般我们会将shadcn集成到现有的前端框架项目中,比如vite、nextjs等等。 但是如果我们要把shadcn抽离出来,成为一个单独的组件库项目,供多个项目使用,那么我们就要创建一个最小可运行的环…

OpenCSG发布最新白皮书!《AgenticOps:重塑企业 AI 生产力的下一代范式》

内容概要 在AI技术飞速发展的今天,企业正面临着从技术突破到行业应用的转型挑战。为此,OpenCSG发布了最新的白皮书,深入剖析了AI产业化的核心挑战与解决方案,并介绍了其革命性的AgenticOps方法论,助力企业实现AI的…

个人微信API开发优选方案:WTAPI框架微信自动化管理

个人微信API开发优选方案:WTAPI框架微信自动化管理 在微信深度渗透社交与商业场景的今天,个人微信号已成为企业客户运营、用户触达的核心载体。开发个人微信营销系统、自定义机器人、智能客服及群数据分析工具等需求…

企业数字化转型几点洞察

企业数字化转型几点洞察背景解决数据孤岛洞察一:这不是IT部门的项目,而是“一把手工程” 一个普遍的误区是将数字化转型视为技术升级,然后将其完全委托给IT部门。然而,所有成功的转型案例都指向一个共同点:…

【config】:google-chrome之配置搜索引擎

【config】:google-chrome之配置搜索引擎【config】:google-chrome之配置搜索引擎一、基础说明1.  在【google-chrome浏览器中】,添加、设置默认的搜索引擎;替换浏览器默认的【谷歌搜索引擎】。二、配置参数1. …

NET8 windows下 发布web.config配置

NET8 windows下 发布web.config配置 <?xml version="1.0" encoding="utf-8"?> <configuration><system.webServer><handlers><add name="aspNetCore" pat…

基于WTAPI框架的个人号二次开发、微信智能管理系统构建

基于WTAPI框架的个人号二次开发、微信智能管理系统构建 在微信深度渗透社交与商业场景的今天,个人微信号已成为企业客户运营、用户触达的核心载体。传统手动操作效率低、功能受限,而WTAPI框架作为专注微信个人号二次…

CSP 2025 GD 迷惑行为大赏

统计 CSP-J 共有 \(4047\) 个文件夹,CSP-S 共有 $$

可视化结构域序列并提取序列

1、可视化点击查看代码 from Bio import AlignIO import os# ====== 用户参数 ====== alignment_file = "比对.fa" # 输入比对文件(fasta/clustal) alignment_format = "fasta" html_output …

2025年11月国际连锁酒店投资加盟推荐:专业评价与选择指南

随着酒店行业逐渐复苏,越来越多的投资者将目光投向国际连锁酒店加盟领域。这类投资者通常具备一定的资金实力,希望通过加盟成熟品牌降低经营风险,同时获得稳定的投资回报。他们可能是首次进入酒店行业的创业者,也可…

vue 安装后端调试接口 - 东方不败-

vue2 安装低版本的:npm install -g json-server@0.17.4

动态规划经典题

动态规划专题动态规划专题基础入门系列经典习题509.斐波那契数 70.爬楼梯 746.使用最小花费爬楼梯 62.不同路径 63.不同路径II 343.整数拆分 96.不同的二叉搜索树背包问题系列01背包问题416.分割等和子集 1049.最后一块…

2025年11月国际连锁酒店投资加盟推荐榜:五大品牌综合对比分析

对于有意向投资国际连锁酒店的投资者而言,选择正确的加盟品牌是决定项目成败的关键一步。这类投资者通常具备一定的资金实力,寻求稳健且可持续的投资回报,他们可能是经验丰富的酒店业者,希望借助国际品牌提升竞争力…

2025年11月连锁酒店加盟品牌推荐榜单:权威解析五大品牌投资价值对比

作为酒店行业的投资者,您可能正在寻找一个具备稳定回报和成熟运营体系的连锁酒店加盟品牌。随着国内商旅市场持续复苏,中端酒店市场呈现出较高的增长潜力,但面对众多品牌选择,投资者常面临品牌辨识度不足、投资回报…

sql 常用命令

1、mysql 服务的启动和停止 net stop mysql net start mysql 2、登录mysql mysql (-h IP)-u 用户名 -p 密码 3、grant 权限 on 数据库. to 用户名@登录主机 identified by "密码"* 例:增加一个用户user密…

今日依旧是java的基础知识内容

java基础知识内容 java的优势与特点简单性 面向对象 多线程 分布式 可移植性 高性能 安全性 健壮性 动态性java为什么能成功与时代契合 踩上了时代的洪流 满足了人们的需求 优势与特点无法替代java三大版本JavaME(嵌入…

基于Java+SSM+Flask网上授课体系(源码+LW+调试文档+讲解等)/在线教育平台/网络教学软件/远程授课器具/在线课程系统/网课平台/视频教学系统/网上教学平台/网络教育系统

基于Java+SSM+Flask网上授课体系(源码+LW+调试文档+讲解等)/在线教育平台/网络教学软件/远程授课器具/在线课程系统/网课平台/视频教学系统/网上教学平台/网络教育系统pre { white-space: pre !important; word-wrap: …

今天依旧是基础知识内容

java基础知识内容 java的优势与特点简单性 面向对象 多线程 分布式 可移植性 高性能 安全性 健壮性 动态性java为什么能成功与时代契合 踩上了时代的洪流 满足了人们的需求 优势与特点无法替代java三大版本JavaME(嵌入…

2025年11月AI智能客服机器人品牌对比榜:五强资质认证与服务范围全梳理

2025年11月,企业正在把“降本增效”从口号变成可量化的KPI,客服中心首当其冲。电销线索转化率下滑、人工座席流失率居高不下、夜间咨询无人响应,这些痛点让“AI智能客服机器人”成为采购清单上的高频关键词。用户场…