2023-09-23 Windows系统rust开发环境配置真经

news2024/11/23 23:40:42

Windows系统rust开发环境配置真经

  • 前言
  • 一、配置C编译链和VsCode
  • 二、安装rust编译工具
  • 三、配置VsCode
    • 一. 安装rust-analyzer插件
    • 二. 安装Error Lens插件
    • 三. 安装Even Better TOML插件
    • 四. 配置 launch.json
    • 五. 配置 tasks.json
    • 六. 配置 Cargo.toml
  • 总结


前言

有了配置C语言环境的经验,配置rust简直不要太容易, … 直到面对cargo以及代码调试.

如果0基础学习编程, 先别挑战boss, 还是先把C搞好.


一、配置C编译链和VsCode

我有大乘配置C工具链真经一卷,

可渡有缘人达成编码自由,

不堕地狱,

不入轮回,

不砸电脑,

不毁键盘,

汝可自此取之: C 语言编程核心突破

环境配置皆可免费查看,

配合2022-03-30 VsCode中使用clangd插件的各种设置 效果更佳.

这是配置rust环境的第一步, 没有C环境, 不行.

二、安装rust编译工具

按上步配置完C工具链后, 你应该完成msys2资源管理系统安装以及VsCode的基本配置了,

打开msys64终端, 输入:

$ pacman -S mingw-w64-clang-x86_64-rust

安装即可.

打开Windows终端, 键入:

C:\Users\Lhb>rustc -V

看到类似, 根据版本不同略有变化

rustc 1.71.1 (eb26296b5 2023-08-03) (Rev2, Built by MSYS2 project)

就成功了.

三、配置VsCode

这个比较难, 我摸索了半天搞定的:

先在你的C盘以外的盘中, 新建一个文件夹, 比如 learnRust, 然后在菜单栏: 文件: 打开文件夹: 打开这个文件夹.

一般会有是否信任文件夹选项, 选择信任.

此时文件夹下空空如也, 没事, 咱们一步一步搞.

设置

一. 安装rust-analyzer插件

这个是rust官方推荐的语言辅助插件, 类似于Clangd, 就是稍微有点慢, 毕竟rust过于复杂.

如图, 在vscode扩展选项卡搜索rust-analyzer, 并安装.
rust-analyzer

二. 安装Error Lens插件

这个是用于显示错误的插件, 如果是随手编写的代码, 可能得到满屏的红色警示.

安装方法, 如法炮制,
Error Lens
这个插件是所有语言通用, 看看C语言配合clang-tidy的效果:
效果
rust效果更惊人, 自己去体会吧.

三. 安装Even Better TOML插件

这个插件是用来编写cargotoml配置文件的, 是的, 学习rust你必须掌握cargo, 类似C/C++make, 至少能新建项目, 编译项目

安装同上
Even Better TOML
效果:

效果

四. 配置 launch.json

如果你学习了C的VSCode环境配置, 这里就比较简单:

默认你已经安装了CodeLLDB代码调试插件, 是的, 调试rust也用lldbgdb, rust的编译需要C, 代码调试的环境和C一样, 如果偷懒没有建立C环境, 一切都是白搭.

在运行和调试选项卡点击创建launch.json

创建launch.json
这里有两个配置, 如果用cargo, 就用第一个配置, 也就是CodeLLDB的基本配置, 它会在项目文件夹的下的\target\debug\文件目录中创建可运行文件.

如果想像C语言似的简单编译, 看第二个配置, 它需要配合tasks.json.

当然, 如果想比较顺利的debug, 还需要做cargo.toml的文件目录调整, 这个看下面cargo.toml设置.

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Cargo launch",
            "cargo": {
                "args": [
                    "build",
                ]
            },
        },
        {
            "type": "lldb",
            "request": "launch",
            "name": "Launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
            "args": [],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "rustBuild"
        },
    ]
}

五. 配置 tasks.json

为了像C一样进行简易编译, 我们需要建立tasks.json文件.

菜单栏: 终端: 配置任务:

配置任务

选择图中所示:

配置build

做一些更改:

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "process",
            "command": "rustc",
            "args": [
                "-g",
                "${fileDirname}\\${fileBasename}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
            ],
            "problemMatcher": [
                "$rustc"
            ],
            "group": "build",
            "label": "rustBuild",
        }
    ]
}

六. 配置 Cargo.toml

这个稍微有点难, 我也是琢磨了半天才整明白:

新建终端: 快捷键 ctrl + shift + `,

注意这个 ` 是大键盘数字1左侧的那个按键.

输入命令:

E:\learnRust>cargo init

成功会显示

     Created binary (application) package

然后你的文件夹下就多了几个文件:

文件
这一步很重要, 将main.rssrc文件夹移动到外层的learnRust文件夹, 更改名字, 比如Learn_01.rs, 删除src文件夹.

这步关系到是否可以顺利调试, 切记.

之后就是打开 Cargo.toml 文件, 进行编辑

Cargo.toml

[package]
name = "learnRust"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

[[bin]]
name = "learnRust"
path = "E:/learnRust/Learn_01.rs"

注意: path = "E:/learnRust/Learn_01.rs" 中的文件名, 要根据你建立的文件名随时更改, 否则无法正确编译.

如果你按以上步骤配置完成, 那么限制的文件布局是:

文件布局

现在就可以打开Learn_01.rs文件, 愉快的编码了.

传统项目, hello, world, 点击F5, 进行调试:

在这里插入图片描述
在这里插入图片描述

恭喜你, 迈入打 BOSS 的第一步, study made you happy!


总结

以上就是rust编译工具链的建立, 如有问题, 可以在评论区讨论.

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

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

相关文章

腾讯mini项目-【指标监控服务重构】2023-08-27

今日已办 Docker Monitoring with cAdvisor, Prometheus and Grafana Docker Monitoring with cAdvisor, Prometheus and Grafana | by Mertcan Simsek | MediumMonitoring Docker container metrics using cAdvisor | Prometheus prometheus.yml global:scrape_interval: …

Linux下安装使用Redis

1.进入/usr/local目录,新建一个目录redis,下载redis安装包 wget https://download.redis.io/releases/redis-6.2.6.tar.gz**并解压 tar xzf redis-6.2.6.tar.gz进入redis-6.2.6目录 cd redis-6.2.6用make来编译 make2.启动redis: ./src/redis-server…

Vue-devTools安装—创建项目方法2 ui创建——Vue指令综合案例——汽车品牌管理

目录 项目源代码: 一、vue-devTools安装 二、案例功能实现 1、新建项目(ui创建) 2、cnpm导入项目依赖库 3、删除不需要的代码结构: 4、修改代码结构 5、添加汽车品牌 插件安装 bootstrap的提示功能 添加bootstrap样式 6、删除汽车品牌…

ndoe.js、npm相关笔记

1、npm 全局安装 npm config get prefix 获取 npm 全局安装路径如果全局插件不能正常使用,看环境变量是否已经配置。没有配置则把全局安装路径配置到环境变量的path中

【golang】调度系列之sysmon

调度系列 调度系列之goroutine 调度系列之m 调度系列之p 在golang的调度体系中,除了GMP本身,还有另外一个比较重要的角色sysmon。实际上,除了GMP和sysmon,runtime中还有一个全局的调度器对象。但该对象只是维护一些全局的数据&…

高云FPGA系列教程(10):letter-shell串口终端移植

文章目录 1. letter-shell简介2. letter-shell源码获取3. letter-shell移植4. 函数和变量应用示例本文是高云FPGA系列教程的第10篇文章。 shell,中文是外壳的意思,就是操作系统的外壳。通过shell命令可以操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总…

leetcode100----双指针

283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1:输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2:输入: nums …

英飞凌TC3xx--深度手撕HSM安全启动(六)--安全启动的TARA、HARA分析

在之前我们讲解基于Tricore的安全启动流程,但是是不是这种流程就是安全可靠的呢?不确定,因此对启动流程基于信息安全的TARA分析基和于功能安全的HARA分析必不可少。 1、安全启动的TARA分析 首先我们来看看什么叫做TARA分析。 在ISO\SAE 21434 中对于TARA描述为threat analy…

浅析工具dirpro v1.2源码

文章目录 前言源码分析dirpro.pystart.pybackup.pyrely.pyresults.pyend.py 前言 工具简介 dirpro 是一款由 python 编写的目录扫描器专业版,操作简单,功能强大,高度自动化 自动根据返回状态码和返回长度,对扫描结果进行二次整理…

【动手学深度学习-Pytorch版】注意力汇聚:Nadaraya-Watson 核回归

注意力机制中的查询、键、值 在注意力机制的框架中包含了键、值与查询三个主要的部分,其中键与查询构成了注意力汇聚(有的也叫作注意力池化)。 键是指一些非意识的线索,例如在序列到序列的学习中,特别是机器翻译&…

基于Python+Django的热门旅游景点数据分析系统的设计与实现(源码+lw+部署文档+讲解等)

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…

JAVA:实现Excel和PDF上下标

1、简介 最近项目需要实现26个小写字母的上下标功能,自己去网上找了所有Unicode的上下标形式,缺少一些关键字母,顾后面考虑自己创建上下标字体样式,以此来记录。 2、Excel Excel本身是支持上下标,我们可以通过Excel单元格的样式来设置当前字体上下标,因使用的是POI的m…

YOLOv5:修改backbone为ACMIX

YOLOv5:修改backbone为ACMIX 前言前提条件相关介绍ACMIXYOLOv5修改backbone为ACMIX修改common.py修改yolo.py修改yolov5.yaml配置 参考 前言 记录在YOLOv5修改backbone操作,方便自己查阅。由于本人水平有限,难免出现错漏,敬请批评…

【软件设计师-从小白到大牛】上午题基础篇:第四章 法律法规与知识产权

文章目录 前言章节提要一、保护期限真题链接 二、知识产权人确定真题链接 三、侵权判定真题链接 四、标准化基础知识 前言 ​ 本系列文章为观看b站视频以及b站up主zst_2001系列视频所做的笔记,感谢相关博主的分享。如有侵权,立即删除。 视频链接&#xf…

Qt5开发及实例V2.0-第二十三章-Qt-多功能文档查看器实例

Qt5开发及实例V2.0-第二十三章-Qt-多功能文档查看器实例 第23章 多功能文档查看器实例23.1. 简介23.2. 界面与程序框架设计23.2.1. 图片资源23.2.2. 网页资源23.2.3. 测试用文件 23.3 主程序代码框架23.4 浏览网页功能实现23.4.1 实现HtmIHandler处理器 23.5. 部分代码实现23.5…

git 本地分支基础操作

(1)建立分支 a:基于某个commit建立分支 然后切换 git branch test_branch 6435675ad32c035ed4d9cb6c351de5cbaecddd99 git checkout test_branchb: git checkout 建立分支然后切换 git checkout -b checkout_branchc:分支建立 然后切换 git branch …

【Amazon】AI 代码生成器—Amazon CodeWhisperer初体验 | 开启开挂编程之旅

使用 AI 编码配套应用程序更快、更安全地构建应用程序 文章目录 1.1 Amazon CodeWhisperper简介1.2 Amazon CodeWhisperer 定价2.1 打开VS Code2.2 安装AWS ToolKit插件 一、前言 1.1 Amazon CodeWhisperper简介 1️⃣更快地完成更多工作 CodeWhisperer 经过数十亿行代码的训…

网络分层模型和常见协议介绍

文章目录 网络分层模型和常见协议介绍网络分层模型介绍常见各层协议介绍 网络分层模型和常见协议介绍 理解性记忆:这是我自己创造的一个理解性记忆口诀,大家别笑我😄 七层:因为七层协议并没有得到应用,所以物&#xff…

【算法】相向双指针

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

【GO】LGTM_Grafana_gozero_配置trace(4)_代码实操及追踪

最近在尝试用 LGTM 来实现 Go 微服务的可观测性,就顺便整理一下文档。 Tempo 会分为 4 篇文章: Tempo 的架构官网测试实操跑通gin 框架发送 trace 数据到 tempogo-zero 微服务框架发送数据到 tempo 本文就是写一下如何在 go-zero 微服务框架里面配置 t…