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

news2025/4/6 0:16:52

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-msvc
     default toolchain: stable (default)
               profile: default
  modify 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 直接在浏览器中打开文档。

    示例:

    /// 计算两个数的和
    /// # 示例
    /// ```
    /// 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中写对应的程序,如下:

    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.coloradmin.cn/o/2304571.html

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

相关文章

SQLMesh 系列教程9- 宏变量及内置宏变量

SQLMesh 的宏变量是一个强大的工具&#xff0c;能够显著提高 SQL 模型的动态化能力和可维护性。通过合理使用宏变量&#xff0c;可以实现动态时间范围、多环境配置、参数化查询等功能&#xff0c;从而简化数据模型的开发和维护流程。随着数据团队的规模扩大和业务复杂度的增加&…

【Deepseek】Linux 本地部署 Deepseek

前言 本文介绍在 Linux 系统上部署 Deepseek AI。本文教程是面向所有想体验 AI 玩家的一个简易教程&#xff0c;因此即使是小白也可以轻松完成体验&#xff0c;话不多说立马着手去干。 [注]&#xff1a;笔者使用的系统为 Ubuntu 24.10 1. 关于 ollama Ollama 是一款开源应用…

git,bash - 从一个远端git库只下载一个文件的方法

文章目录 git,bash - 从一个远端git库只下载一个文件的方法概述笔记写一个bash脚本来自动下载get_github_raw_file_from_url.shreanme_file.shfind_key_value.sh执行命令 END git,bash - 从一个远端git库只下载一个文件的方法 概述 github上有很多大佬上传了电子书库&#xf…

臻识相机,华夏相机,芊熠车牌识别相机加密解密

臻识&#xff0c;华夏&#xff0c;芊熠这三种车牌识别相机解密我都试过了&#xff0c;可以正常解密成功&#xff0c;其它品牌我暂时没有测试。超级简单&#xff0c;免费的&#xff0c;白嫖无敌&#xff01; 流程&#xff1a; ①&#xff1a;先导出配置文件&#xff0c;例如我以…

网络安全与措施

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 # 网络安全问题概述 1) 数据安全 访问&#xff08;授权访问&#xff09;&#xff1b;存储&#xff08;容灾、备份或异地备份等&#xff09; 2) 应用程序 不能…

前后端分离系统架构:基于Spring Boot的最佳实践

前后端分离系统架构图描绘了一个基于Springboot的前端后台分离的系统架构。它强调了前端&#xff08;客户端&#xff09;与远程&#xff08;服务器&#xff09;的解耦&#xff0c;通过API接口进行交互&#xff0c;分别独立开发和部署。 前后端分离系统架构图 从上到下&#xff…

内外网文件传输 安全、可控、便捷的跨网数据传输方案

一、背景与痛点 在内外网隔离的企业网络环境中&#xff0c;员工与外部协作伙伴&#xff08;如钉钉用户&#xff09;的文件传输面临以下挑战&#xff1a; 安全性风险&#xff1a;内外网直连可能导致病毒传播、数据泄露。 操作繁琐&#xff1a;传统方式需频繁切换网络环境&…

抖音试水AI分身;腾讯 AI 战略调整架构;百度旗下小度官宣接入DeepSeek...|网易数智日报

抖音试水AI分身&#xff0c;字节旗下AI智能体平台扣子已与抖音打通&#xff0c;相关功能内测中 2月19日消息&#xff0c;钛媒体App独家获悉&#xff0c;字节旗下AI智能体开发平台扣子&#xff08;Coze&#xff09;已与抖音打通&#xff0c;抖音创作者可在扣子智能体平台打造AI分…

红帽7基于kickstart搭建PXE环境

Kickstart 文件是一种配置文件&#xff0c;用于定义 Linux 系统安装过程中的各种参数&#xff0c;如分区、网络配置、软件包选择等。system-config-kickstart 提供了一个图形界面&#xff0c;方便用户快速生成这些配置文件。 用户可以通过图形界面进行系统安装的详细配置&…

安装PHPStudy 并搭建DVWA靶场

目录 一、PHPStudy 简介 二、DVWA 简介 三、安装 PHPStudy 四&#xff1a;安装 DVWA 一、PHPStudy 简介 phpstudy傻瓜式的一键启动&#xff0c;支持WAMP、WNMP、LAMP、LNMP&#xff0c;一键切换环境&#xff08;nginxapahce&#xff09;,一键切换PHP版本&#xff08;5.1-7…

SQL写法技巧

目录 1.批量插入&#xff0c;查询&#xff0c;删除数据 缺点 实现方法 1.批量插入数据 2.批量查询数据 3.批量删除数据 4.批量修改数据 解释 2.树型表查询 方法一&#xff1a;递归(适用于多级的情况) 方法二&#xff1a;表的自连接 方法三&#xff1a;MySQL递归&am…

Ryu:轻量开源,开启 SDN 新程

1. Ryu 控制器概述 定位&#xff1a;轻量级、开源的SDN控制器&#xff0c;专为开发者和研究人员设计&#xff0c;基于Python实现。开发者&#xff1a;由日本NTT实验室主导开发&#xff0c;遵循Apache 2.0开源协议。核心理念&#xff1a;简化SDN应用开发&#xff0c;提供友好的…

【核心算法篇十四】《深度解密DeepSeek量子机器学习:VQE算法加速的黑科技与工程实践》

在经典计算机逼近物理极限的今天,量子计算正以指数级加速潜力颠覆传统计算范式。想象一下,一个需要超级计算机运算千年的化学分子模拟问题,用量子计算机可能只需几分钟——这就是DeepSeek团队在VQE(Variational Quantum Eigensolver)算法加速实践中创造的奇迹。根据,VQE作…

“国补”带火手机换新,出售旧手机应如何保护个人信息安全

在“国补”政策的推动下,手机换新热潮正席卷而来。“国补”以其诱人的补贴力度,成功激发了消费者更换手机的热情。无论是渴望体验最新技术的科技爱好者,还是对旧手机性能不满的普通用户,都纷纷投身到这场手机换新的浪潮之中。 随着大量消费者参与手机换新,二手手机市场迎来…

数据结构:基数排序(c++实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 基数排序的定义和基本原理基本原理具体步骤 基数排序的优缺点&#xff1a;代码实现总结 基数排序的定义和基本原理 基数排序(Radix Sort)是一…

eNSP下载安装(eNsp、WinPcap、Wireshark、VirtualBox下载安装)

一、下载 下载网址&#xff1a;https://cloud.grbj.cn/softlink/eNSP%20V100R003C00SPC100%20Setup.exe 备用临时网址&#xff1a;https://linshi.grbj.cn/abdpana/softlink 二、准备工作 系统要求 关闭防火墙 三、安装 3.1安装WinPcap 基本都是下一步&#xff0c;双击&…

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解 1 冯诺依曼体系结构1.1 基本概念理解1.2 CPU只和内存打交道1.3 为什么冯诺依曼是这种结构1.4 理解数据流动 2 操作系统2.1 什么是操作系统2.2 设计OS的目的2.3 操作系统小知识点2.4 如何理解"管理"2.5 系统调用和…

Linux 权限系统和软件安装(二):深入理解 Linux 权限系统

在 Linux 的世界里&#xff0c;权限系统犹如一位忠诚的卫士&#xff0c;严密守护着系统中的文件与目录&#xff0c;确保只有具备相应权限的用户才能进行操作。与其他一些操作系统不同&#xff0c;Linux 并不依据文件后缀名来标识文件的操作权限&#xff0c;而是构建了一套独特且…

Windows 中的启动项如何打开?管理电脑启动程序的三种方法

在日常使用电脑时&#xff0c;我们经常会发现一些应用程序在开机时自动启动&#xff0c;这不仅会拖慢系统的启动速度&#xff0c;还可能占用不必要的系统资源。幸运的是&#xff0c;通过几个简单的步骤&#xff0c;你可以轻松管理这些开机自启的应用程序。接下来&#xff0c;我…

uniapp邪门事件

很久之前在这篇《THREEJS 在 uni-app 中使用&#xff08;微信小程序&#xff09;》&#xff1a;THREEJS 在 uni-app 中使用&#xff08;微信小程序&#xff09;_uni-app_帶刺的小葡萄-华为开发者空间 中学到了如何在uniapp的微信小程序里接入three.js的3d模型 由于小程序自身很…