Rust 基本环境安装

rust 基本介绍请看上一篇文章:rust 介绍

rustup

介绍

rustup 是 Rust 语言的安装器和版本管理工具。通过 rustup,可以轻松地安装 Rust 编译器(rustc)、标准库和文档。它也允许你切换不同的 Rust 版本或目标平台,以及管理多个 Rust 版本。

安装步骤

类 unix 操作系统

在类 Unix(MacOS, Ubuntu, Centos, …Linux)系统中, 打开终端执行以下命令安装 rustup

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

执行安装后,将会下载并安装 Rust 编程语言的官方编译器。

安装途中,会询问你安装配置,如果没有特殊需求,我们输入 1 使用默认配置,并回车。

默认配置及解释如下

  1. default host tripleaarch64-unknown-linux-gnu 是一个目标三元组(target triple),用于指示编译器目标平台的体系结构、厂商、系统、和ABI(应用程序二进制接口)。这个配置告诉 Rust 编译器为哪种类型的系统构建代码。
  2. default toolchain: 默认情况下,Rust 安装程序会安装 stable 版本的工具链。Rust 有几个发布渠道:稳定版(stable)测试版(beta)开发版(nightly)。稳定版是经过充分测试,随时可用于生产环境的版。默认使用稳定版工具链是为了保证开发的稳定性和代码的可靠性。
  3. profiledefault 配置文件会安装 Rust 编程语言的常用组件,例如标准库CargoRustfmt。Rustup 提供了不同的配置文件,如 minimal,它只安装最必要的组件,或 complete,它包含了所有可用的组件和工具。
  4. modify PATH variable: Rust 安装程序询问是否要修改环境变量 PATH。同意修改 PATH 会将 Rust 的可执行文件路径(如 cargorustc 等)添加到你的系统环境变量 PATH 中。这样做的目的是为了确保你可以在任何地方(比如在终端或命令行中)运行 Rust 工具链的命令,无需指定完整的路径。

接下来,安装程序将会安装一系列 rust 工具链:

  1. cargo: Cargo 是 Rust 的包管理工具,用于管理 Rust 项目的依赖、编译和发布。它相当于其他编程语言中的 npm、pip 等工具。Cargo通过Cargo.toml文件追踪项目依赖,并且能够处理项目的构建、测试、文档生成等任务。
  2. clippy: Clippy 是 Rust 的一种静态分析工具(Linter),用于在代码编写阶段发现常见错误和改进建议。它提供了许多lints(规则),通过对代码进行分析,帮助提升代码的质量和性能。
  3. rust-docs: 这个组件包含了 Rust 编程语言的标准库文档。此文档允许开发者离线阅读和查找相关API的用法,是学习和参考Rust标准库的重要资料。
  4. rust-std: 这是 Rust 的标准库组件,包含了预编译的Rust标准库,供目标平台使用。标准库提供了很多编程基础设施,如基本类型、标准宏、I/O操作、线程和并发控制工具等。
  5. rustc: 这是 Rust 的编译器,负责将 Rust 代码编译成机器代码。rustc提供了编译、链接等功能,是Rust程序开发的核心工具。
  6. rustfmt: Rustfmt 是一个代码格式化工具,用来自动格式化 Rust 代码风格。它通过重写源代码来保证代码风格一致,可读性和风格上的规范性,便于团队合作和项目维护。

安装完成后,重启终端或者执行以下命令使其生效:

source "$HOME/.cargo/env"

windows 系统

直接点击下载安装程序:rustup-init.exe,或者根据 https://rustup.rs/ 官网进行下载。

双击安装程序后,将会弹出小黑框,询问你是否安装了 C++ 构建工具,这里输入 y 跳过即可。

windows 后续安装步骤与类 Unix 安装基本一致,可以直接参考类 Unix 安装部分。

验证安装结果

安装完成后,重新打开终端让更改生效,验证安装是否成功,运行:

rustc --version

此命令显示已安装的 Rust 版本。

rustup 常用命令

1. 更新 rustup 本身

rustup self update

2. 卸载 rustup

rustup self uninstall

3. 查看当前已安装的 Rust 版本

rustup show

4. rustup 检查更新

rustup check

5. 更新到最新稳定版

rustup update

cargo

介绍

cargo 是 Rust 的构建工具和包管理器。使用 cargo,可以方便地创建新项目、构建项目、运行项目、测试项目,并且可以轻松地将你的Rust库发布到 crates.io,Rust的包管理库。

常用命令

1. 创建新项目

cargo new <project_name>

创建一个新的项目,会同时生成 Cargo.toml 配置文件与 src 目录,如果是不是在 git 仓库下创建,将同时初始化为 git 仓库。

2. 构建项目

cargo build

构建项目,会在项目目录下的 target/debug 目录生成可执行文件或库。

3. 构建并运行项目

cargo run

构建并运行 Rust 程序。

4. 运行测试

cargo test

运行项目中定义的测试函数。

5. 生成文档

cargo doc

为项目构建文档,便于用户了解库的使用方法和功能。

6. 发布到 crates.io

cargo publish

将库代码打包并发布到 crates.io,允许其他人在他们的项目中作为依赖使用。

编辑器

得益于 Ferrous Systems 公司开源的 rust-analyzer , 为许多代码编辑器(VS Code、Emacs、Vim 等)都提供了代码补全和跳转定义等功能。

以下是一些常用的 Rust 开发编辑器:

  • VS Code : 需安装rust-analyzer 等插件
  • Sublime Text:需安装 Rust Enhanced 等插件
  • Zed: 高性能编辑器,自带 Rust 开发环境
  • RustRover: JetBrains 公司出的 Rust 专属 IDE
  • Intellij IDEA:需安装 Rust 插件,目前插件不再维护。

目前我本人在编写 Rust 程序时在使用 Zed, 主要 Zed 编辑器目前比较干净,没有太多乱七八糟的东西,对于 Rust 更是开箱即用,比较推荐,当然这个根据个人偏好自行选择便是,实际区别不大。

常见问题

在添加新的 crate 到 Cargo.toml 文件并运行 cargo build 时,有时会遇到以下错误:

Blocking waiting for file lock on package cache

解决方法

这个问题通常是由于 cargo 尝试访问被锁定的缓存文件导致的。

  1. 打开终端,进入 ~/.cargo 目录,
  2. 使用 ls -a 命令查看是否有 .package-cache 文件。
  3. 如果存在,使用 rm 命令删除该文件即可。

相关资料

  • target triple: https://doc.rust-lang.org/nightly/rustc/platform-support.html
  • rust 官网:https://www.rust-lang.org/
  • rustup 官网:https://rustup.rs/
  • rustup 安装方法:https://forge.rust-lang.org/infra/other-installation-methods.html
  • crates 官网:https://crates.io/
  • cargo 官方文档:https://doc.rust-lang.org/cargo/index.html

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

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

相关文章

petalinux安装的问题:

1. 安装是成功的&#xff0c;但是安装位置&#xff0c;就是用来存放petalinux的文件夹里没有文件 我是照着正点的文档安装的&#xff0c;出现的一个问题就是最后执行文件这里&#xff1a; -d 后面这个文件夹的路径&#xff0c;我看网上的教程也都是跟文档一致的 /opt/pkg/peta…

每日五道java面试题之java基础篇(十一)

目录: 第一题. Java死锁如何避免&#xff1f;第二题. 为什么⽤线程池&#xff1f;解释下线程池参数&#xff1f;第三题. 线程池的底层⼯作原理第四题. ReentrantLock中tryLock()和lock()⽅法的区别第五题. Sychronized和ReentrantLock的区别? 第一题. Java死锁如何避免&#x…

社区养老|社区养老服务系统|基于springboot社区养老服务系统设计与实现(源码+数据库+文档)

社区养老服务系统目录 目录 基于springboot社区养老服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员部分功能 &#xff08;1&#xff09; 用户管理 &#xff08;2&#xff09;服务种类管理 &#xff08;3&#xff09;社区服务管理 &#xff08…

【教学类-19-08】20240214《ABAB式-规律黏贴18格-手工纸15*15CM-一页3种图案,A空,纵向、无边框》(中班)

背景需求 利用15*15CM手工纸制作AB色块手环&#xff08;手工纸自带色彩&#xff09;&#xff0c;一页3个图案&#xff0c;2条为一组&#xff0c;黏贴成一个手环 素材准备 代码展示 # # 作者&#xff1a;阿夏 # 时间&#xff1a;2024年2月14日 # 名称&#xff1a;正方形数字卡…

2023 车载摄像头产业链梳理

1. 车载摄像头的发展和市场空间 车载摄像头&#xff0c;最早在车载行车记录仪、倒车影像功能中被应用。而随着汽车产业步入智能化&#xff0c; 360 环 视 、 ADAS 、 智 能 座 舱 等 应 用 为 车 载 摄 像 头 带 来 了 巨 大 的 市 场 需 求 。 特 别 是 在 自 动 驾驶 、 36…

BBC英式口语~发音练习~笔记整理

参考资料 原视频地址&#xff1a; https://www.bilibili.com/video/BV1D7411n7bS/?spm_id_from333.1245.0.0&vd_source5986fc7c8e6d754f3ca44233573aeaff 笔记图片

MySQL篇之覆盖索引

一、定义 覆盖索引是指查询使用了索引&#xff0c;并且需要返回的列&#xff0c;在该索引中已经全部能够找到。 二、例子 1. id为主键&#xff0c;默认是主键索引。 2. name字段为普通索引。 select * from tb_user where id 1 覆盖索引 select id&#xff0c;na…

如何选择适合的社区店项目,开启创业之路

对于想要创业的人来说&#xff0c;选择一个适合的社区店项目是成功的关键。在这篇文章中&#xff0c;我将以一名资深鲜奶吧创业者的身份&#xff0c;分享一些关于如何选择适合的社区店项目的经验和见解&#xff0c;希望能给大家提供有价值的参考。 一、市场调研 在选择社区店…

海量数据处理商用短链接生成器平台 - 4

第六章 架构核心技术-池化思想-异步结合 性能优化最佳实践 第1集 RestTemplate里面的存在的问题你知道多少- Broken pipe错误 项目就更新到第六章了&#xff0c;剩下的内容 放百度网盘里面了&#xff0c;需要的来取。 链接&#xff1a;https://pan.baidu.com/s/19LHPw36dsxPB7…

四、JMS规范

JMS规范 一、JMS是什么二、MQ中间件对比三、JMS组成1.JMS Provider2.JMS Producer3.JMS Consumer4.JSM Message4.1 消息头4.2 消息体4.2.1 生产者4.2.2 消费者 4.3 消息属性 四、JMS可靠性1.PERSISTENT - 持久化1.1 参数设置1.2 Queue持久化1.3 Topic持久化1.3.1 持久的发布主题…

Linux文件操作类命令 touch | stat | cp | scp | alias | mv | dd | cat | head | tail

touch 1.创建空文件&#xff08;只有元数据信息&#xff0c;没有数据段内容&#xff09;touch 1.txt 2.对创建或已经存在的文件改变元数据信息的时间记录值-d 改变创建时间touch -d 20240101 1.txt -a改变访问时间 -m改变修改时间stat 查看元数据信息 Blocks是512字…

排序算法---桶排序

原创不易&#xff0c;转载请注明出处。欢迎点赞收藏~ 桶排序&#xff08;Bucket Sort&#xff09;是一种排序算法&#xff0c;它将待排序的数据分到几个有序的桶中&#xff0c;每个桶再分别进行排序&#xff0c;最后将各个桶中的数据按照顺序依次取出&#xff0c;即可得到有序序…

【机器学习笔记】 9 集成学习

集成学习方法概述 Bagging 从训练集中进行子抽样组成每个基模型所需要的子训练集&#xff0c;对所有基模型预测的结果进行综合产生最终的预测结果&#xff1a; 假设一个班级每个人的成绩都不太好&#xff0c;每个人单独做的考卷分数都不高&#xff0c;但每个人都把自己会做的…

在 Android 上部署自定义 YOLOv8 教程

在本教程中&#xff0c;我将向您展示如何在 Android 设备上使用自定义数据集部署 YOLOv8。想要了解如何在 Android 设备上使用您自己的数据集部署 YOLOv8&#xff1f;本文将展示如何操作。 Android 上的 自定义 YOLOv8 &#x1f525; ⚡️ 结果显示标题 对从 GoPro 流式传输到移…

Sora时代,我们的AI应该何去何从?——关于Sora大模型的思考

Sora时代&#xff0c;我们的AI应该何去何从?——关于Sora大模型的思考 一、Sora大模型&#xff1a;横空出世&#xff0c;让AI生成所有领域瑟瑟发抖二、Sora的出现代表了相关行业的灭亡&#xff1f;三、我们将何去何从&#xff1f; 一、Sora大模型&#xff1a;横空出世&#xf…

1.8 NLP自然语言处理

NLP自然语言处理 更多内容&#xff0c;请关注&#xff1a; github&#xff1a;https://github.com/gotonote/Autopilot-Notes.git 一、简介 seq2seq(Sequence to Sequence)是一种输入不定长序列&#xff0c;产生不定长序列的模型&#xff0c;典型的处理任务是机器翻译&#…

前端常见的设计模式

说到设计模式&#xff0c;大家想到的就是六大原则&#xff0c;23种模式。这么多模式&#xff0c;并非都要记住&#xff0c;但作为前端开发&#xff0c;对于前端出现率高的设计模式还是有必要了解并掌握的&#xff0c;浅浅掌握9种模式后&#xff0c;整理了这份文章。 六大原则&…

Linux第一个小程序-进度条

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、回车和换行 二、行缓冲区概念 三、倒计时 四、进度条代码 版本一&#xff1a; ​编辑 版本二&#xff1a; 总结 前言 世上有两种耀眼的光芒&#xff0c;一…

第七篇【传奇开心果系列】Python微项目技术点案例示例:数据可视化界面图形化经典案例

传奇开心果微博系列 系列微博目录Python微项目技术点案例示例系列 微博目录一、微项目开发背景和项目目标&#xff1a;二、雏形示例代码三、扩展思路介绍四、数据输入示例代码五、数据分析示例代码六、排名统计示例代码七、数据导入导出示例代码八、主题定制示例代码九、数据过…

蓝桥杯第十四届电子类单片机组程序设计

目录 前言 蓝桥杯大赛历届真题&#xff08;点击查看&#xff09; 一、第十四届比赛题目 1.比赛原题 2.题目解读 1&#xff09;任务要求 2&#xff09;注意事项 二、任务实现 1.NE555读取时机的问题 1&#xff09;缩短计数时间 2&#xff09;实时读取 2.温度传感器读…