您的位置:首页 > 财经 > 金融 > 北京疫情的最新数据_双十一各平台数据_今日热点新闻事件2022_百度seo怎么收费

北京疫情的最新数据_双十一各平台数据_今日热点新闻事件2022_百度seo怎么收费

2025/4/15 21:54:31 来源:https://blog.csdn.net/weixin_41245990/article/details/145942325  浏览:    关键词:北京疫情的最新数据_双十一各平台数据_今日热点新闻事件2022_百度seo怎么收费
北京疫情的最新数据_双十一各平台数据_今日热点新闻事件2022_百度seo怎么收费

Windows安装Rust Rust 入门+语法详解+开发示例+ Cursor辅助开发

  • 1 rust 安装
    • 1.1 安装环境
    • 1.2 配置rustup和cargo目录 (可选)
    • 1.3 配置安装加速镜像地址
    • 1.4 配置库镜像地址(类似python的pip)
    • 1.5 下载Rust安装程序
    • 1.6 安装后验证
  • 2 Cursor 安装
    • 2.1 Cursor 安装
    • 2.2 配置中文扩展
    • 2.3 配置交流语言
    • 2.4 安装插件
    • 2.5 Cursor +CodeLLDB 运行和调式 rust 程序
      • 2.5.1 调试器设置
      • 2.5.2 运行 和 调试
      • 2.5.3 使用 launch.json 配置 调试器
      • 2.5.4 rust代码debug时中文乱码问题
        • 2.5.4.1 方法:更改区域设置中设置
        • 2.5.4.2 方法:修改 Cursor 中的 Encoding ,不推荐使用
    • 2.6 常用快捷键
  • 3 初识 rust
    • 3.1 Rust语言的特色
    • 3.2 Rust 和 C/C++ 的对比:
    • 3.3 Rust代码执行分析
    • 3.4 Rust 编译&运行指南
      • 3.4.1 Cargo 包管理
      • 3.4.2 cargo 命令说明
      • 3.4.3 命令行调试
      • 3.4.4 使用第三方包
    • 3.5 Rust命令规范
  • 4 开发示例
    • 4.1 创建项目
    • 4.2 调试代码
    • 4.3 常用的调试特性
    • 4.4 使用 log 包进行日志调试:
    • 4.5 条件编译
    • 4.6 性能分析和内存检查
      • 4.6.1 使用 flame 进行性能分析:
      • 4.6.2 内存泄漏检测:
    • 4.7 实用调试技巧
      • 4.7.1 使用 #[derive(Debug)]:
      • 4.7.2 使用 unwrap_or_else 进行调试:
      • 4.7.3 条件编译的调试函数:
    • 4.8 集成测试调试
  • 5 使用 Cursor 辅助开发 windows_service 服务
    • 5.1 创建项目
    • 5.2 开启 Composer
    • 5.3 项目的全自动开发
      • 5.3.1 把 main.rs 和 Cargo.toml 增加到会话中
      • 5.3.2 创建 windows_service
    • 5.4 服务代码解析
  • 6 Rust 语法
    • 6.1 Rust 变量
    • 6.2 数据类型
      • 6.2.1 值类型
      • 6.2.2 引用类型
      • 6.2.3 基本数据类型
        • 6.2.3.1 字符类型
        • 6.2.3.2 str字符串类型
      • 6.2.4 复合数据类型
        • 6.2.4.1 元组
        • 6.2.4.2 结构体
        • 6.2.4.3 结构体更新语法
        • 6.2.4.4 枚举体
      • 6.2.5 常用集合类型
        • 6.2.5.1 线性序列:向量
        • 6.2.5.2 线性序列:双端队列
        • 6.2.5.3 线性序列:链表
        • 6.2.5.4 Key-Value映射表:HashMap和BTreeMap
        • 6.2.5.5 集合:HashSet和BTreeSet
        • 6.2.5.6 优先队列:BinaryHeap
        • 6.2.5.7 容量(Capacity)和大小(Size/Len)
      • 6.2.6 Rust字符串
        • 6.2.6.1 字符串处理方式
        • 6.2.6.2 字符串修改
        • 6.2.6.3 字符串的查找
        • 6.2.6.4 类型转换
        • 6.2.6.5 格式化规则
      • 6.2.7 原生字符串声明语法:r”…”
      • 6.2.8 全局类型
        • 6.2.8.1 区别:
    • 6.3 trait
    • 6.4 指针
      • 6.4.1 引用Reference
      • 6.4.2 原生指针(裸指针)
      • 6.4.3 智能指针
        • 6.4.3.1 智能指针有哪些
      • 6.4.4 解引用deref
    • 6.5 所有权机制(ownership):
      • 6.5.1 词法作用域(生命周期)
      • 6.5.2 非词法作用域声明周期
      • 6.5.3 所有权借用
  • 7 疑问&总结
    • 7.1 Copy语义 && Move语义(Move语义必须转移所有权)
    • 7.2 Copy 特性
    • 7.3 Copy trait 的关键作用
    • 7.4 我的数据类型需要实现 Copy trait 吗?
    • 7.5 Copy Trait 和 Clone trait
  • 8 面向对象
    • 8.1 RUST的"类"
    • 8.2 面向对象特性-封装
    • 8.3 面向对象特性-继承
    • 8.4 面向对象特性-多态
  • 9 函数式编程
    • 9.1 闭包
    • 9.2 迭代器
  • 10 Rust属性
  • 11 unwrap
    • 11.1 用于 Option 类型
    • 11.2 用于 Result 类型
    • 11.3 unwrap 的替代方案
    • 11.4 使用 unwrap 的场景

1 rust 安装

1.1 安装环境

Visual Studio:Visual Studio 2022 企业版 Rust默认使用的C语言依赖Visual Studio
系统:Windows 11 专业版

1.2 配置rustup和cargo目录 (可选)

安装前,可以通过设置环境变量,来设置安装位置
示例:安装在 d:\rust

  • 在系统的运行中执行:rundll32.exe sysdm.cpl,EditEnvironmentVariables,打开环境变量
  • 增加用户变量,如下:

RUSTUP_HOME d:rust\ustup_home
CARGO_HOME d:\rust\cargo_home
在这里插入图片描述
如果未设置,缺省会安装到C盘,如我安装后 cargo 的安装位置

C:\Users\lzc73>where cargo
C:\Users\lzc73\.cargo\bin\cargo.exeC:\Users\Administrator>

1.3 配置安装加速镜像地址

从官方网站下载时会比较慢,可以改用国内镜像加速安装,设置以下环境变量即可:

  • 清华大学开源软件镜像站:rustup | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
    RUSTUP_DIST_SERVER https://mirrors.tuna.tsinghua.edu.cn/rustup
    RUSTUP_UPDATE_ROOT https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup

  • 中国科学技术大学镜像服务器
    RUSTUP_DIST_SERVER https://mirrors.ustc.edu.cn/rust-static
    RUSTUP_UPDATE_ROOT https://mirrors.ustc.edu.cn/rust-static/rustup

1.4 配置库镜像地址(类似python的pip)

在【C:\Users\用户名】下创建“.cargo”文件夹,在文件夹内创建“config”文件
在这里插入图片描述
在文件中输入以下内容并保存:

[source.crates-io]
registry="https://github.com/rust-lang/crates.io-index"
replace-with='tuna'
[source.tuna]
registry=https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git

在这里插入图片描述

1.5 下载Rust安装程序

  • 从rust 官网下载:Install Rust - Rust Programming Language
    在这里插入图片描述
  • 双击下载后的 rustup-init.exe 执行安装
    在这里插入图片描述

选项1:标准安装,要求必须安装C/C++的编译环境,默认是 visual studio安装器
选择2:定制安装,C/C++的编译环境使用mingw64时使用
选择2:取消安装

  • 输入1后回车后等待安装完成

1.6 安装后验证

打开cmd窗口,输入:cargo -V

C:\Users\lzc73>cargo -V
cargo 1.85.0 (d73d2caf9 2024-12-31)

输入:rustc --version

C:\Users\lzc73>rustc --version
rustc 1.85.0 (4d91de4e4 2025-02-17)

查看安装目录:where cargo

C:\Users\lzc73>where cargo
C:\Users\lzc73\.cargo\bin\cargo.exe

2 Cursor 安装

我们需要一个IDE环境来提高开发效率,个人推荐 Cursor 这款编辑器,对 Cursor 不了解的可以使用 vscode。
cursor 是开源的一款免费的AI集成的开发环境,集成了GPT4、Claude 3.5等主流LLM,其布局、使用和vscode基本一致。
cursor直接在官网下载安装即可,并且注册账号,在第一次打开cursor时输入账号信息即可。

2.1 Cursor 安装

  • 点击进入cursor官网下载:Cursor - The AI Code Editor
  • 注册账号
  • 下载后双击安装
  • 安装完成后运行 Cursor
  • 在第一次打开cursor时输入账号信息

每个账号的模型调用次数是有限的,其中GPT4和Claude3.5的免费调用次数为500次,其它比较弱的模型的调用次数无上限。

2.2 配置中文扩展

  • 选择【File】【Preferences】【Extensions】打开扩展
    在这里插入图片描述
  • 输入 chinese,选择安装【chinese(simplified) (简体中文) Lang】语言包
    在这里插入图片描述
  • 安装完成后重启即可
    在这里插入图片描述
  • 在使用中,可【Ctrl+Shift+p】或者在最上面的搜索框中输入language,选择【configure display language】
    在这里插入图片描述
  • 可选择配置自己喜欢的语言
    在这里插入图片描述

2.3 配置交流语言

在交流输入框内输入:ZH-CN ONLY在这里插入图片描述

2.4 安装插件

Cursor 只是一个编辑器,所以我们还需要安装rust插件,来打造这个编辑器成为一个IDE,方法也很简单点击左边的插件选项,然后在上面输入rust进行搜索,然后安装 rust-analyzer 和 CodeLLDB:

  • 安装 rust-analyzer
    在这里插入图片描述
  • 安装 CodeLLDB 扩展
    在这里插入图片描述
  • 安装 C/C++ 相关扩展
    在这里插入图片描述

2.5 Cursor +CodeLLDB 运行和调式 rust 程序

2.5.1 调试器设置

  • 找到 rust-analyzer 插件,点击【管理】按钮
    在这里插入图片描述
  • 在右键菜单中点击【设置】
    在这里插入图片描述
  • 在【设置面板】中点击【debug】
    在这里插入图片描述
  • 找到 【rust-analyzer > Debug:Engine】,选择【vadimcn.vscode-lldb】
    在这里插入图片描述

注意:选择【vadimcn.vscode-lldb】使用的是CodeLLDB调试器,需要安装对应的扩展插件

2.5.2 运行 和 调试

  • 运行代码:只需要点击main函数上面的 Run 按钮,就可以直接运行
  • 调试代码:只需要打好断点,点击main函数上面的 Debug 按钮,就可以直接运行
    在这里插入图片描述

2.5.3 使用 launch.json 配置 调试器

我们也可以使用 launch.json 进行主动配置运行和调试的调试器

  • 打开运行和调试视图
    在这里插入图片描述
  • 选择【创建 launch.json 文件】
    在这里插入图片描述
  • 选择【LLDB】
    在这里插入图片描述
  • 生成 创建 launch.json 文件,缺省配置的是 debug 模式
    在这里插入图片描述
    launch.json 文件内容如下:
{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"type": "lldb","request": "launch","name": "Debug executable 'hello-world'","cargo": {"args": ["build","--bin=hello-world","--package=hello-world"],"filter": {"name": "hello-world","kind": "bin"}},"args": [],"cwd": "${workspaceFolder}"}]
}
  • 按 F5 直接开始代码调试
    在这里插入图片描述

2.5.4 rust代码debug时中文乱码问题

2.5.4.1 方法:更改区域设置中设置

【控制面板】->【时钟和区域】->【区域】->【更改区域设置】…
在这里插入图片描述

2.5.4.2 方法:修改 Cursor 中的 Encoding ,不推荐使用

打开【文件】->【首选项】->【配置】,找到【用户】->【文件】->【Encoding】,我们可以看到的是 UTF-8
在这里插入图片描述
在这里插入图片描述

  • 把 Encoding 格式改为:Simplified Chinese (GB18030),重启 Cursor 后生效
    在这里插入图片描述

文件保存后在 Cursor 中显示会是乱码,所以不推荐使用

2.6 常用快捷键

cursor 最常用的快捷键就四个,非常好记:

Tab:自动填充
Ctrl+K:编辑代码
Ctrl+L:回答用户关于代码和整个项目的问题,也可以编辑代码(功能最全面)
Ctrl+i:编辑整个项目代码(跨文件编辑代码)

  • Tab快捷键的使用,如果要cursor补全代码,使用Tab键接受即可。
  • Ctrl+K的使用,主要分为两种:
    • 从0到1编写代码
      随便找一个空白区域按下Ctrl+K唤出编辑框,选择模型,输入需求开始生成,生成后点击Accept或或Reject接受或拒绝。
    • 修改已有代码
      选中已有代码按下Ctrl+K唤出编辑框,选择模型,输入需求开始编辑,生成后点击Accept或或Reject接受或拒绝,也可以点击代码行最右侧进行单行代码的Accept或Reject。

3 初识 rust

Rust是一种由 Mozilla 主导开发的系统编程高级语言,专注于安全性、并发性和性能。

3.1 Rust语言的特色

  • 内存安全:Rust通过所有权和借用检查器来确保内存安全,防止了如空指针解引用、悬挂指针和双重释放等常见的内存错误。这种强大的内存管理机制使得Rust成为了一个理想的系统级编程语言,尤其适用于那些需要处理复杂内存操作的项目。
  • 高性能:Rust几乎可以媲美C和C++的性能,同时提供了更为安全的编程方式。Rust编译器采用了先进的优化技术,使得Rust代码在运行时可以获得接近原生代码的性能。这种性能优势使得Rust在高性能计算、游戏开发、网络编程等领域具有广泛的应用前景。
  • 并发性:Rust内置了强大的并发原语,如轻量级线程(Rust中的goroutines被称为“线程”或“任务”)和消息传递(channels),使得编写高效并发代码变得简单。Rust的并发模型基于Actor模型,通过消息传递来实现线程间的通信,从而避免了共享内存带来的同步问题。这使得Rust在处理并发任务时具有更高的效率和稳定性。
  • 零成本抽象:Rust允许在高层抽象和底层实现之间自由切换,且不会带来性能损失。这意味着开发者可以在保持代码可读性和可维护性的同时,获得接近原生代码的性能。这种零成本抽象的特性使得Rust在构建大型系统时具有更高的灵活性和可扩展性。
  • 所有权模型:Rust的所有权模型确保了每个资源在任何时候都只有一个所有者。当所有者离开作用域时,其拥有的资源会被自动释放,从而避免了内存泄漏和悬挂指针等问题。这种模型使得Rust在内存管理方面更加简洁和直观。
  • 类型系统:Rust拥有强大的静态类型系统,可以在编译时捕获许多潜在的错误。这使得Rust代码更加健壮和可靠,减少了运行时错误的可能性。
  • 无垃圾收集器:虽然Rust支持自动内存管理,但它并不依赖于传统的垃圾收集器。相反,Rust通过所有权和借用检查器来实现自动内存管理,从而避免了垃圾收集器带来的性能开销和不确定性。
  • 跨平台兼容性:Rust支持多种操作系统和硬件平台,包括Windows、Linux、macOS等。这使得Rust成为了一个跨平台的编程语言,可以方便地在不同的环境中进行开发和部署。

3.2 Rust 和 C/C++ 的对比:

-RustC/C++
内存安全Rust中的所有内存访问都经过了编译器的严格检査,并且在运行时不会出现空指针异常或数据竞争等问题。这意味着 Rust代码具有更高的可靠性和安全性,可以避免常见的安全漏洞。C/C++中则时常需要担心指针、内存问题,尤其是在大型项目中,非常容易因此出现各种各样的Bug。
高效性能Rust具有与C 和 C++ 相当的性能,并采用了现代语言的特性和设计理念,如智能指针Q、闭包和模式匹配等。这使得 Rust很适合编写高性能、低延迟的系统级应用程序和库。
并发性Rust的所有权系统和借用规则使其易于编写线程安全的代码,即使在多线程环境下也可以保持高效率和可靠性。C/C++中完全需要自己进行控制。
社区支持Rust拥有活跃的社区,在crates上提供了许多开源库、工具和框架,可以大幅度提升开发效率。C/C++虽然学习的人很多,但却几乎没有官方的、活跃的社区可以供大家交流,都是在各搞各的。
统一包管理而Rust则直接提供了一个统一的包管理程序,只需要写一行代码,就能自动为你下载配置好你所需要的一切,并且还提供对应的文档,使用起来非常方便!C/C++中,想要用一个包,需要自己下载、安装、配置等等。有个 vcpkg 包管理库很不错,但这毕竟不是标准委员会推出的,而是微软带头组织的开源项目,如果不会科学上网,国内几乎无法使用
GUI 程序想要用rust写GUI程序比较麻烦,因为官方目前还没有推出GUI库。可以在代码中调用C语言开发的库来开发。有正在发展的库,如:egui、iced、tauri等等生态完善,可选框架很多

通过上面的对比,我们便能看出Rust的优势所在了。

rust GUI库 个人目前最推荐的是Tauri,参考:初识Tauri。

Python语言之所以能火,其中有个很大的原因就是Python有一个统一的包管理程序 pip,可以很方便的下载各种第方包,不需要自己配置。而一旦学会了Rust,即使是作为较为底层的开发人员,我们同样也能享受到这种便利了。

3.3 Rust代码执行分析

与C/C++一样,Rust也是一门编译型高级语言。我们知道:编译高级语言时,编译器不是直接将的源语言翻译为目标语言,而是翻译为一种“中间语言”(“IR”–指令集),之后再利用后端程序和设备将中间语言翻译为目标平台的汇编语言。

  • Rust代码执行过程:
  1. Rust代码经过分词和解析,生成AST(抽象语法树)。
  2. 然后把AST进一步简化处理为HIR(High-level IR / 高级中间语言),目的是让编译器更方便的做类型检查。
  3. HIR会进一步被编译为MIR(Middle IR / 中级中间语言),这是一种中间表示,主要目的是:
    a) 缩短编译时间;
    b) 缩短执行时间;
    c) 更精确的类型检查。
  4. 最终MIR会被翻译为LLVM IR,然后被LLVM的处理编译为能在各个平台上运行的目标机器码。
  • LLVM :Low Level Virtual Machine,底层虚拟机
    LLVM 是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time)。
    无疑,不同编译器的中间语言IR是不一样的,而IR可以说是集中体现了这款编译器的特征:他的算法,优化方式,汇编流程等等,想要完全掌握某种编译器的工作和运行原理,分析和学习这款编译器的中间语言无疑是重要手段。
    由于中间语言相当于一款编译器前端和后端的“桥梁”,如果我们想进行基于LLVM的后端移植,无疑需要开发出对应目标平台的编译器后端,想要顺利完成这一工作,透彻了解LLVM的中间语言无疑是非常必要的工作。
    LLVM相对于gcc的一大改进就是大大提高了中间语言的生成效率和可读性, LLVM的中间语言是一种介于c语言和汇编语言的格式,他既有高级语言的可读性,又能比较全面地反映计算机底层数据的运算和传输的情况,精炼而又高效。

  • MIR:中级中间语言
    MIR是基于控制流图(Control Flow Graph,CFG)的抽象数据结构,它用有向图(DAG)形式包含了程序执行过程中所有可能的流程。所以将基于MIR的借用检查称为非词法作用域的生命周期。
    MIR由以下关键部分组成:

  • 基本块(Basic block,bb),是控制流图的基本单位

  • 语句(statement)

  • 终止句(Terminator)

    • 本地变量,占中内存的位置,比如函数参数、局部变量等。
    • 位置(Place),在内存中标识未知的额表达式。
    • 右值(RValue),产生值的表达式。

Rust 具体的工作原理见《Rust编程之道》的第158和159页。
可以在http://play.runst-lang.org中生成MIR代码。

3.4 Rust 编译&运行指南

3.4.1 Cargo 包管理

Cargo是Rust中的包管理工具,第三方包叫做crate。
Cargo一共做了四件事:

  • 使用两个元数据(metadata)文件来记录各种项目信息
  • 获取并构建项目的依赖关系
  • 使用正确的参数调用rustc或其他构建工具来构建项目
  • 为Rust生态系统开发建议了统一标准的工作流

Cargo文件:

  • Cargo.lock:只记录依赖包的详细信息,不需要开发者维护,而是由Cargo自动维护
  • Cargo.toml:描述项目所需要的各种信息,包括第三方包的依赖

cargo编译默认为Debug模式,在该模式下编译器不会对代码进行任何优化。也可以使用–release参数来使用发布模式。release模式,编译器会对代码进行优化,使得编译时间变慢,但是代码运行速度会变快。
官方编译器 rustc,负责将 rust 源码编译为可执行的文件或其他文件(.a、.so、.lib等)。例如:rustc box.rs

3.4.2 cargo 命令说明

Rust还提供了包管理器Cargo来管理整个工作流程。
例如:

指令说明
cargo new first_pro_create创建名为 first_pro_create 的项目
cargo new --lib first_lib_create创建命令 first_lib_create 的库项目
cargo doc
cargo doc --open生成并打开文档
cargo test
cargo test – --test-threads=1
cargo build只编译,不运行,默认编译的是 debug 版本
cargo build --release编译为 release 版本
cargo run直接运行
cargo install --path
cargo uninstall first_pro_create
cargo new –bin use_regex

3.4.3 命令行调试

  • 使用 rust-gdb 或 rust-lldb:
# 编译带调试信息的程序
cargo build# 使用 rust-gdb
rust-gdb target/debug/your_program# 或使用 rust-lldb
rust-lldb target/debug/your_program
  • 常用命令:
break main     # 在 main 函数设置断点
run           # 运行程序
continue (c)  # 继续执行
next (n)      # 单步跳过
step (s)      # 单步进入
print var     # 打印变量
backtrace     # 显示调用栈

3.4.4 使用第三方包

Rust 可以在 Cargo.toml 中的 [dependencies] 下添加想依赖的包来使用第三方包。
然后在src/main.rs或src/lib.rs文件中,使用 extern crate 命令声明引入该包即可使用。

注意:使用extern crate声明包的名称是linked_list,用的是下划线“_”,而在Cargo.toml中用的是连字符“-”。其实Cargo默认会把连字符转换成下划线。
Rust也不建议以“-rs”或“_rs”为后缀来命名包名,而且会强制性的将此后缀去掉。

具体的见《Rust编程之道》的第323页。

3.5 Rust命令规范

  • 函数: 蛇形命名法(snake_case),例如:func_name()
  • 文件名: 蛇形命名法(snake_case),例如file_name.rs、main.rs
  • 临时变量名:蛇形命名法(snake_case)
  • 全局变量名:
    • 结构体: 大驼峰命名法,例如:struct FirstName { name: String}
    • enum类型: 大驼峰命名法。
    • 关联常量:常量名必须全部大写。什么是关联常量见《Rust编程之道》的第221页。

注意:

  • Cargo默认会把连字符“-”转换成下划线“_”。
  • Rust也不建议以“-rs”或“_rs”为后缀来命名包名,而且会强制性的将此后缀去掉。

4 开发示例

下面,我们开发一个简单的示例项目来进一步学习。

4.1 创建项目

  • 使用命令【cargo new hello-world】创建一个由cargo管理的项目
c:\work\rustApp>cargo new hello-worldCreating binary (application) `hello-world` package
note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.htmlc:\work\rustApp>
  • 项目的目录结构为:
    ├── .git
    ├── .gitignore
    ├── Cargo.toml (项目配置信息)
    └── src (编写源代码目录)
    └── main.rs (cargo创建的Hello World 案例)

  • main.rs 代码如下:

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

示例中定义了入口函数:main,函数体内使用宏 println! 在命令行中打印 “Hello, world!”。

  • 使用命令【cargo run】,将编译项目的源代码,生成可执行文件并运行。
c:\work\rustApp\hello-world>cargo runCompiling hello-world v0.1.0 (C:\work\rustApp\hello-world)Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.50sRunning `target\debug\hello-world.exe`
Hello, world!c:\work\rustApp\hello-world>

程序运行时打印 “Hello, world!”。

  • Cargo.toml 文件中内容如下:
[package]
name = "hello-world"
version = "0.1.0"
edition = "2024"[dependencies]

package:包区域
name:项目名称
version:项目版本
edition:rust 版本
dependencies:依赖项区域,用于列出项目的依赖项。这些依赖项是Rust包,也称为“crates”,它们提供了项目所需的功能或库。Cargo(Rust的包管理器)能够自动下载、编译和链接这些依赖项,从而简化项目的构建过程。
每个依赖项通过其名称和版本号(或版本范围)来指定。版本号遵循语义化版本控制(Semantic Versioning,简称SemVer)的规范,通常格式为“主版本号.次版本号.修订号”,例如 1.2.3。有时,还可以指定预发布版本或元数据。

4.2 调试代码

  • 在 main.ts 中增加一些调试代码来了解简单的调试方法,代码如下:
fn main() {println!("Hello, world!");// 1. 使用 println! 宏进行简单调试let x = 42;println!("Debug: x = {:?}", x);// 2. 使用 dbg! 宏(推荐)let numbers = vec![1, 2, 3];dbg!(&numbers);// 3. 条件断点示例for i in 0..10 {if i == 5 {// 在这里设置断点println!("到达断点位置");}}
}

4.3 常用的调试特性

  • 使用 dbg! 宏:
// dbg! 宏会打印文件名、行号和表达式的值
let a = 1;
let b = dbg!(a * 2) + 1;
// 输出类似:[src/main.rs:2] a * 2 = 2
  • 自定义 Debug 实现:
#[derive(Debug)]
struct Point {x: i32,y: i32,
}// 或手动实现 Debug
impl std::fmt::Debug for Point {fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {write!(f, "Point({}, {})", self

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com