Rust语言基础知识详解【一】

server/2025/2/24 21:27:45/

1.在windows上安装Rust

Windows 上安装 Rust 需要有 C++ 环境,以下为安装的两种方式:

1. x86_64-pc-windows-msvc(官方推荐)

先安装 Microsoft C++ Build Tools,勾选安装 C++ 环境即可。安装时可自行修改缓存路径与安装路径,避免占用过多 C 盘空间。

准备好 C++ 环境后开始安装 Rust:

在 RUSTUP-INIT 下载系统相对应的 Rust 安装程序,一路默认即可。

PS C:\Users\48370> rustup-init.exe
......
Current installation options:
​default host triple: x86_64-pc-windows-msvcdefault toolchain: stable (default)profile: defaultmodify PATH variable: yes
​
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation

2.更新

要更新 Rust,在终端执行以下命令即可更新:

$ rustup update

3.卸载

要卸载 Rust 和 rustup,在终端执行以下命令即可卸载:

$ rustup self uninstall

4.检查是否安装成功

检查是否正确安装了 Rust,可打开终端并输入下面这行,此时能看到最新发布的稳定版本的版本号、提交哈希值和提交日期:

$ rustc -V
rustc 1.56.1 (59eed8a2a 2021-11-01)
​
$ cargo -V
cargo 1.57.0 (b2e52d7ca 2021-10-21)

注:若发现版本号不同,以您的版本号为准

恭喜,你已成功安装 Rust!

5.开发工具

这里我选择的是Jetbrains的RustRover,因为已经习惯使用Jetbrains全家桶的工具了,也可以使用VSCode【需要下载对应的rust-analyzer插件】。

2.认识Cargo

Cargo 是 Rust 语言的官方包管理器和构建工具,集成了代码编译、依赖管理、测试运行、文档生成、包发布等功能。它是 Rust 生态系统的核心工具,几乎每个 Rust 项目都会使用 Cargo 来管理。

核心功能

1. 项目管理

  • 项目初始化 通过 cargo newcargo init 创建项目,自动生成标准目录结构和配置文件:

    cargo new my_project   # 创建二进制可执行项目
    cargo new --lib my_lib # 创建库项目

    生成的文件结构:

    my_project/├── Cargo.toml   # 项目元数据和依赖配置├── Cargo.lock   # 新增的锁定文件├── .gitignore   # 默认忽略 target/ 目录└── src/└── main.rs  # 主入口文件(或 lib.rs 用于库)
  • Cargo.toml 项目的核心配置文件,包含:

    • 元数据:项目名称、版本、作者、许可证等。

    • 依赖声明:直接依赖、开发依赖、构建依赖。

    • 构建配置:优化选项、特性开关(features)、目标平台等。

    示例:

    [package]
    name = "my_project"
    version = "0.1.0"
    authors = ["Your Name <your@email.com>"]
    edition = "2021"  # Rust 版本
    ​
    [dependencies]
    serde = "1.0"     # 直接依赖
    tokio = { version = "1.0", features = ["full"] }
    ​
    [dev-dependencies]
    rand = "0.8"      # 仅测试和示例使用的依赖
  • Cargo.lock

当首次运行 cargo build 或添加依赖后,Cargo 会自动生成 Cargo.lock 文件。它记录了项目依赖的精确版本信息,确保每次构建时依赖版本的一致性。

  • 位置:项目根目录下的 Cargo.lock

  • 作用:

    • 锁定所有依赖的具体版本(包括间接依赖)。

    • 确保团队成员或部署环境使用完全相同的依赖版本。

    • 防止因依赖版本意外升级导致构建失败或行为不一致。

与 Cargo.toml 的区别

Cargo.tomlCargo.lock
编辑方式手动编辑(声明依赖的版本范围)自动生成(记录依赖的精确版本)
版本控制必须提交到版本库应用项目建议提交,库项目通常不提交
示例内容serde = "1.0"(允许语义化版本更新)serde = { version = "1.0.189" }

2. 依赖管理

  • 依赖来源

    • crates.io:默认的公共包仓库(类似 npm 的 registry)。

    • Git 仓库:直接从 Git 仓库拉取代码。

    • 本地路径:引用本地其他项目作为依赖。

    示例:

    [dependencies]
    # 从 crates.io 获取
    regex = "1.5"
    # 从 GitHub 分支获取
    my_lib = { git = "https://github.com/user/my_lib", branch = "dev" }
    # 本地路径依赖
    local_lib = { path = "../local_lib" }
  • 版本解析 Cargo 使用语义化版本(SemVer)管理依赖,并自动解析依赖冲突,生成精确版本的依赖关系(记录在 Cargo.lock 文件中)。

3. 构建与编译

  • 基本命令

    • cargo build:编译项目,生成调试版二进制文件(位于 target/debug/)。

    • cargo build --release:编译优化后的生产版本(位于 target/release/)。

    • cargo run:编译并直接运行主程序。

    • cargo check:快速检查代码语法和类型,不生成二进制文件。

  • 增量编译 Cargo 默认启用增量编译,仅重新编译修改过的部分,大幅提升开发效率。

4. 测试与文档

  • 单元测试与集成测试

    • 在代码中使用 #[test] 标记测试函数。

    • 通过 cargo test 运行所有测试。

    • 支持测试过滤(如 cargo test test_add 运行特定测试)。

  • 文档生成

    • 使用 /////! 编写文档注释。

    • 通过 cargo doc 生成 HTML 文档,自动托管依赖的文档链接。

    • cargo doc --open 直接在浏览器中打开文档。

    示例:

    rust">/// 计算两个数的和
    /// # 示例
    /// ```
    /// assert_eq!(add(2, 3), 5);
    /// ```
    pub fn add(a: i32, b: i32) -> i32 {a + b
    }

3.Hello World!

在学习一门新的语言最开始的时候,都是要从输出hello world!开始的。下面演示一下创建rust项目以及编写、运行hello world程序。

  • 首先打开RustRover,点击“文件”->“新建”->“项目”

然后点击“创建”,这样就新建了一个rust项目。

  • 这是创建好的项目结构

  • 接下来在main.rs中写对应的程序,如下:

    rust">fn main() {println!("Hello, world!");
    }

点击图中的箭头就可以运行程序了,控制台输出结果如下:

  • 接下来是对代码的解释:

    1. fn main() { ... }

    • 作用:定义程序的入口函数

    • 细节

      • 每个可执行 Rust 程序必须有一个 main 函数

      • fn 是函数定义的关键字(function 的缩写)

      • 函数体必须用花括号 {} 包裹

      • Rust 使用 4 空格缩进(非强制但社区约定)

    2. println!("Hello, World!");

    • 作用:向标准输出打印文本

    • 分解

      • println! 是一个 (macro),不是普通函数,注意结尾的 ! 符号

      • "Hello, World!" 是一个字符串字面量

      • 行尾必须有分号 ;(Rust 中大多数语句以分号结尾)


http://www.ppmy.cn/server/170407.html

相关文章

Unity游戏制作中的C#基础(6)方法和类的知识点深度剖析

1.驼峰命名法 在 C# 编程里&#xff0c;命名规范对于代码的可读性和可维护性至关重要&#xff0c;驼峰命名法便是其中广泛使用的一种命名约定&#xff0c;它主要分为小驼峰命名法和大驼峰命名法&#xff08;帕斯卡命名法&#xff09;。 小驼峰命名法&#xff1a;这种命名方式的…

基于python+django的宠物商店-宠物管理系统源码+运行步骤

该系统是基于pythondjango开发的宠物商店-宠物管理系统。是给师妹开发的课程作业。现将源码开放给大家。大家学习过程中&#xff0c;如遇问题可以在github咨询作者。加油 演示地址 前台地址&#xff1a; http://pet.gitapp.cn 后台地址&#xff1a; http://pet.gitapp.cn/adm…

如何确定服务器是否被黑客入侵爆破

服务器被黑客入侵爆破&#xff08;如暴力破解密码或利用漏洞攻击&#xff09;是网络安全中常见的威胁之一。这类攻击可能导致数据泄露、服务中断甚至系统完全失控。本文将详细介绍如何检测服务器是否被黑客入侵爆破&#xff0c;并提供实用的代码示例和解决方案。 一、黑客入侵…

软件工程和系统分析与设计

软件工程 1、软件危机 2、软件过程模型 2.1 瀑布模型 2.2原型模型 2.3螺旋模型 2.4敏捷模型 2.5软件统一过程 3、软件能力成熟度模型 CMM 4、软件能力成熟度模型集成 CMMI 系统分析与设计 1、结构化方法SASD 1.1结构化分析 DFD 1.2结构化设计 SD-是一种面向数据流的设计…

玩转 Java 与 Python 交互,JEP 库来助力

文章目录 玩转 Java 与 Python 交互&#xff0c;JEP 库来助力一、背景介绍二、JEP 库是什么&#xff1f;三、如何安装 JEP 库&#xff1f;四、JEP 库的简单使用方法五、JEP 库的实际应用场景场景 1&#xff1a;数据处理场景 2&#xff1a;机器学习场景 3&#xff1a;科学计算场…

redis-性能下降的原因排查

问题现象 Redis 响应变慢&#xff0c;查询或写入操作耗时增加。 原因 数据量过大&#xff0c;导致操作复杂度增加。频繁的大 key 操作&#xff08;如 HGETALL、SMEMBERS&#xff09;。网络延迟或带宽不足。Redis 实例负载过高&#xff0c;CPU 或内存资源不足。AOF 或 RDB 持久…

(二)趣学设计模式 之 工厂方法模式!

目录 一、 啥是工厂方法模式&#xff1f;二、 为什么要用工厂方法模式&#xff1f;三、 工厂方法模式怎么实现&#xff1f;四、 工厂方法模式的应用场景五、 工厂方法模式的优点和缺点六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博…

14.7 LangChain Experimental 模块解析:解锁 Auto-GPT 开发新范式

LangChain Experimental 模块解析:解锁 Auto-GPT 开发新范式 关键词:LangChain Experimental、Auto-GPT 实现、自主智能体开发、Agent 架构设计、实验性功能实践 1. LangChain Experimental 模块的定位与核心能力 模块定位解析: #mermaid-svg-4xz2OlZBUFjkBmqw {font-fami…