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

news/2024/5/19 20:26:00/文章来源:https://blog.csdn.net/m0_54206076/article/details/133218542

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.luyixian.cn/news_show_175074.aspx

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

相关文章

简单好用的Python装饰器详解

装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用于在不修改原始代码的情况下添加额外的…

【Android Framework系列】第15章 Fragment+ViewPager与Viewpager2相关原理

1 前言 上一章节【Android Framework系列】第14章 Fragment核心原理(AndroidX版本)我们学习了Fragment的核心原理,本章节学习常用的FragmentViewPager以及FragmentViewPager2的相关使用和一些基本的源码分析。 2 FragmentViewPager 我们常用的两个Page…

分享78个Python源代码总有一个是你想要的

分享78个Python源代码总有一个是你想要的 源码下载链接:https://pan.baidu.com/s/1ZhXDsVuYsZpOUQIUjHU2ww?pwd8888 提取码:8888 下面是文件的名字。 12个python项目源码 Apache Superset数据探查与可视化平台v2.0.1 API Star工具箱v0.7.2 Archery…

刷刷刷——滑动窗口

文章目录 209. 长度最小的子数组(中等)题目链接算法原理代码实现 3. 无重复字符的最长子串(中等)题目链接算法原理代码实现 1004. 最大连续1的个数 III(中等)题目链接算法原理代码实现 1658. 将 x 减到 0 的…

[矩阵的乘法运算] m*M = c

另人给的一道题,一时没弄出来,后来看WP,复现一下。 对于矩阵运算 m*M c 求m 的情况。 满秩差1半秩 import os import secret import hashlib from Crypto.Util.number import getPrime from Crypto.Util.Padding import padLEN 32def xo…

Denoising diffusion implicit models 阅读笔记

Denoising diffusion probabilistic models (DDPMs)从马尔科夫链中采样生成样本,需要迭代多次,速度较慢。Denoising diffusion implicit models (DDIMs)的提出是为了加速采样过程,减少迭代的次数,并且要求DDIM可以复用DDPM训练的网…

【AI视野·今日CV 计算机视觉论文速览 第252期】Fri, 22 Sep 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 22 Sep 2023 Totally 90 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚SVGCustomization, 基于文本的矢量图生成定制(from 香港城市大学)。 website:https://intchous.github.io/SVGCustomization/ …

基于SpringBoot的社区医院信息平台

目录 前言 一、技术栈 二、系统功能介绍 患者信息管理 护士信息管理 医生信息管理 药品管理员管理 患者添加 安排检查 完成注射列表 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系…

【一、虚拟机vmware安装】

安装虚拟机 下载 官方下载地址:https://www.vmware.com/cn.html 大概流程就是,最重要的事最后一步

问题:conda删除虚拟环境,报错no package names supplied

用conda 用 conda remove -n ScratchDet_20200114 删除虚拟 环境ScratchDet_20200114时报错 conda remove -n ScratchDet_20200114CondaValueError: no package names supplied,try "conda remove -h" for more details 解决方法,用下面的命令 conda env…

什么是CORS(跨源资源共享)?如何解决前端中的CORS问题?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CORS(跨源资源共享)⭐ 解决前端中的CORS问题的方法⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为…

LeetCode【174. 地下城游戏】

一片丹心图报国,两行清泪为忠家。——于谦 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康…

Python进阶学习----一闭三器

目录 ​编辑 前言 一.三器 1. 迭代器(Iterator) 1.1 什么是可迭代对象 1.2什么是迭代器 1.3案例演示: 以下是一个简单的迭代器示例,遍历一个列表并打印每个元素: 1.4迭代器总结 2. 生成器(Generat…

前端uniapp如何转base64使用uniapp插件市场

插件市场 网址 使用 可以下载,也可以引用,我是下载下来的引用 代码 正常使用 pathToBase64(img).then(path > {img pathresolve(path)}).catch(error > {console.error(error)reject(error)})使用出现[object Promise]错误 解决方法 let img …

算法通关村第16关【青铜】| 滑动窗口思想

1. 滑动窗口的基本思想 一句话概括就是两个快慢指针维护的一个会移动的区间 固定大小窗口:求哪个窗口元素最大、最小、平均值、和最大、和最小 可变大小窗口:求一个序列里最大、最小窗口是什么 2. 两个入门题 (1)子数组最大平…

Docker部署Nginx+FastDFS插件

文章目录 一、部署FastDFS二、部署Nginx(带FastDFS插件)三、FastDFS上传文件Nginx访问验证 一、部署FastDFS 1、准备工作 docker pull qinziteng/fastdfs:5.05 Pwd"/data/software/fastdfs" mkdir ${Pwd}/{storage,tracker} -p2、创建TEST容器,将fastdf…

RK3568平台开发系列讲解(工具命令篇)ADB的安装

🚀返回专栏总目录 文章目录 一、ADB介绍二、Windows 下安装 adb 工具沉淀、分享、成长,让自己和他人都能有所收获!😄 一、ADB介绍 adb 全称 Android Debug Bridge,直译过来就是 Android 调试桥,它是一个通用的命令行工具。adb 做为 Android 设备与 PC 端连接的一个桥梁…

linux c++调用c

参考 【Linux下gcc编译的四个过程】_Deacde_ZY的博客-CSDN博客 C与C如何互相调用_c文件引用c头文件_卍一十二画卍的博客-CSDN博客 Linux动态链接库的创建与使用_linux创建动态库_满天星羽的博客-CSDN博客 c调用c 1.1 例子1&#xff1a; test1.c #include <stdio.h>…

Python|OpenCV-访问并修改图片像素值,鉴别彩色和灰色图像(6)

前言 本文是该专栏的第6篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在使用OpenCV对图像进行操作的时候,通常需要熟练掌握一些Numpy知识点。因为有的时候需要用到Numpy和OpenCV结合去实现图像的操作,所以说想要写出较好的OpenCV代码的最好方法,就需要有Nump…

【线性代数】为什么 AA* = |A|E

A A ∗ 矩阵相乘&#xff0c;刚好是行列式展开的定义 AA*矩阵相乘&#xff0c;刚好是行列式展开的定义 AA∗矩阵相乘&#xff0c;刚好是行列式展开的定义 矩阵提取一个因子 ∣ A ∣ &#xff0c;所有元素需要除 ∣ A ∣ 矩阵提取一个因子 |A|&#xff0c;所有元素需要除 |A| 矩…