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

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

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

相关文章

太以假乱真了,大家小心

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

.NET Core MongoDB数据仓储和工作单元模式封装

前言 上一章我们把系统所需要的MongoDB集合设计好了&#xff0c;这一章我们的主要任务是使用.NET Core应用程序连接MongoDB并且封装MongoDB数据仓储和工作单元模式&#xff0c;因为本章内容涵盖的有点多关于仓储和工作单元的使用就放到下一章节中讲解了。仓储模式&#xff08;R…

SpringMVC速成(二)

文章目录 SpringMVC速成&#xff08;二&#xff09;1.SSM整合1.1 流程分析1.2 整合配置步骤1&#xff1a;创建Maven的web项目步骤2:添加依赖步骤3:创建项目包结构步骤4:创建SpringConfig配置类步骤5:创建JdbcConfig配置类步骤6:创建MybatisConfig配置类步骤7:创建jdbc.properti…

云计算基础-虚拟化概述

虚拟化概述 虚拟化是一种资源管理技术&#xff0c;能够将计算机的各种实体资源&#xff08;如CPU、内存、磁盘空间、网络适配器等&#xff09;予以抽象、转换后呈现出来并可供分割、组合为一个或多个逻辑上的资源。这种技术通过在计算机硬件上创建一个抽象层&#xff0c;将单台…

《UE5_C++多人TPS完整教程》学习笔记15 ——《P16 会话接口委托(Session Interface Delegates)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P16 会话接口委托&#xff08;Session Interface Delegates&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xf…

Matplotlib plt.scatter:从入门到精通,只需一篇文章!

Matplotlib plt.scatter&#xff1a;从入门到精通&#xff0c;只需一篇文章&#xff01;&#x1f680; 利用Matplotlib进行数据可视化示例 &#x1f335;文章目录&#x1f335; 一、plt.scatter入门&#xff1a;轻松迈出第一步 &#x1f463;二、进阶探索&#xff1a;plt.scatt…

大文件上传如何做断点续传?

文章目录 一、是什么分片上传断点续传 二、实现思路三、使用场景小结 参考文献 一、是什么 不管怎样简单的需求&#xff0c;在量级达到一定层次时&#xff0c;都会变得异常复杂 文件上传简单&#xff0c;文件变大就复杂 上传大文件时&#xff0c;以下几个变量会影响我们的用…

用HTML和CSS打造跨年烟花秀视觉盛宴

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>跨年烟花秀</title><meta name"viewport" content"widthdevi…

poetry,一个好用的Python项目依赖管理库

🏷️个人主页:鼠鼠我捏,要死了捏的主页 🏷️付费专栏:Python专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前言 在 Python 开发领域,项目依赖管理是一个至关重要的问题。Python Poetry 是一个现代化的项目依赖管理工具,旨在简化 Python 项目的依赖管理和打包…

【JavaSE】数据类型和运算符

目录​​​​​​​ 前言 数据类型 1. 数据类型的分类 2. 基本数据类型 变量 1. 概叙 2. 整型变量 3. 字节型 & 短整型 & 长整型变量 4. 单 / 双精度浮点型变量 5. 字符型变量 6. 布尔型变量 类型转换 1. 自动类型转换(隐式) 2. 强制类型转换(显式) 补…

身份治理存在权限问题

身份治理正迅速成为 CISO 的首要考虑因素。二十年前&#xff0c;当萨班斯-奥克斯利法案(SoX) 和其他监管指令在互联网泡沫破灭后诞生时&#xff0c;身份治理要求就出现了。合规性控制&#xff0c;例如用户访问审查和有效管理员工访问生命周期的需要&#xff0c;是当时身份治理的…

OpenCV中的边缘检测技术及实现

介绍: 边缘检测是计算机视觉中非常重要的技术之一。它用于有效地识别图像中的边缘和轮廓&#xff0c;对于图像分析和目标检测任务至关重要。OpenCV提供了多种边缘检测技术的实现&#xff0c;本博客将介绍其中的两种常用方法&#xff1a;Canny边缘检测和Sobel边缘检测。 理论介…

JavaSE-02笔记【封装~this和static】

文章目录 1.封装&#xff08;掌握&#xff09;1.1 封装的理解1.2 不封装存在的问题1.3 怎么封装1.4 难点解惑1.5 练习 2. this 和 static2.1 this&#xff08;掌握&#xff09;2.1.1 this是什么2.1.2 this 在实例方法中使用2.1.3 this访问实例变量2.1.4 this扩展①2.1.5 this扩…

林浩然与杨凌芸的Java时光魔法:格式化历险记

林浩然与杨凌芸的Java时光魔法&#xff1a;格式化历险记 The Java Time Odyssey of Lin Haoran and Yang Lingyun: A Formatting Adventure 在编程世界的一隅&#xff0c;有一个名叫林浩然的程序员。他是个Java大侠&#xff0c;对代码世界的法则了如指掌&#xff0c;尤其擅长驾…

Vue2学习第三天

Vue2 学习第三天 1. 计算属性 computed 计算属性实现 定义&#xff1a;要用的属性不存在&#xff0c;要通过已有属性计算得来。 原理&#xff1a;底层借助了Objcet.defineproperty方法提供的getter和setter。 get函数什么时候执行&#xff1f; 初次读取时会执行一次。当依赖…

中科院一区论文复现,改进蜣螂算法,Fuch映射+反向学习+自适应步长+随机差分变异,MATLAB代码...

本期文章复现一篇发表于2024年来自中科院一区TOP顶刊《Energy》的改进蜣螂算法。 论文引用如下&#xff1a; Li Y, Sun K, Yao Q, et al. A dual-optimization wind speed forecasting model based on deep learning and improved dung beetle optimization algorithm[J]. Ener…

人工智能学习与实训笔记(十四):Langchain Agent

0、概要 Agent是干什么的&#xff1f; Agent的核心思想是使用语言模型&#xff08;LLM&#xff09;作为推理的大脑&#xff0c;以制定解决问题的计划、借助工具实施动作。在agents中几个关键组件如下&#xff1a; Agent&#xff1a;制定计划和思考下一步需要采取的行动。Tools…

H12-821_44

44.如图所示的网络,R1设备配置路由渗透,那么R1设备把Level-2的LSP发送给R3,使R3可以获知全网路由。 A.正确 B.错误 答案&#xff1a;B 注释&#xff1a; 感觉题目描述有两个问题&#xff1a; 1. R3是Level-1-2路由器&#xff0c;本来就可以学习到Level-2的路由。题目中的R3应该…

会声会影支持哪些视频格式 会声会影2024软件下载 会声会影序列号在哪里购买

时常有朋友遇到这样的烦恼&#xff0c;就是从网络上下载下载来的视频&#xff0c;不能够导入到会声会影里面。这到底是怎么回事&#xff0c;到底支持哪些视频格式呢&#xff1f;下面小编将来给大家介绍一下。 还没有下载会声会影2024的朋友可以通过这个链接下载&#xff1a;ht…

mysql 执行update操作 记录未修改

问题 mysql 执行update操作 记录未修改 详细问题 笔者进行SpringBootMybatis项目开发&#xff0c;确认执行update操作 控制台内容如下 Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession3cbe9459] was not registered for sync…