Rust 基本环境安装

news2024/11/25 4:23:47

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.coloradmin.cn/o/1451682.html

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

相关文章

Compose 自定义 - 数据转UI的三阶段(组合、布局、绘制)

一、概念 Compose 通过三个阶段把数据转化为UI&#xff1a;组合&#xff08;要显示什么&#xff09;、布局&#xff08;要显示在哪里&#xff09;、绘制&#xff08;如何渲染&#xff09;。 组合阶段 Compisition 界面首次渲染时会将可组合函数转化为一个个布局节点 Layout Nod…

【打工日常】使用docker部署linux-command解析搜索工具

一、linux-command介绍 linux-command工具是一个非盈利性的工具&#xff0c;里面记录了550 个 Linux 命令&#xff0c;内容包含 Linux 命令手册、详解、学习&#xff0c;是值得收藏的 Linux 命令速查手册。内容来自网络和网友的补充。 二、本次实践介绍 1. 本次实践简介 本次…

Flume(二)【Flume 进阶使用】

前言 学数仓的时候发现 flume 落了一点&#xff0c;赶紧补齐。 1、Flume 事务 Source 在往 Channel 发送数据之前会开启一个 Put 事务&#xff1a; doPut&#xff1a;将批量数据写入临时缓冲区 putList&#xff08;当 source 中的数据达到 batchsize 或者 超过特定的时间就会…

qt-C++笔记之捕获鼠标滚轮事件并输出滚轮角度增量

qt-C笔记之捕获鼠标滚轮事件并输出滚轮角度增量 code review! 文章目录 qt-C笔记之捕获鼠标滚轮事件并输出滚轮角度增量1.运行2.main.cpp3.main.pro 1.运行 2.main.cpp #include <QApplication> #include <QWidget> #include <QWheelEvent> #include <…

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

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

java的面向对象编程(oop)——认识枚举

前言 打好基础&#xff0c;daydayup! 枚举 1&#xff0c;认识枚举&#xff1a; 枚举是一种特殊类&#xff0c;用enum语句修饰。与普通类不同的是&#xff1a;枚举类的第一行只能写一些合法的标识符&#xff08;名称&#xff09;&#xff0c;多个名称用逗号隔开。这些标识符&a…

相机图像质量研究(16)常见问题总结:光学结构对成像的影响--IRCUT

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

原型模式-Prototype Pattern

原文地址:https://jaune162.blog/design-pattern/prototype-pattern/ 引言 在Java中如果我们想要拷贝一个对象应该怎么做?第一种方法是使用 getter和setter方法一个字段一个字段设置。或者使用 BeanUtils.copyProperties() 方法。这种方式不仅能实现相同类型之间对象的拷贝,…

第三百四十九回

文章目录 1. 概念介绍2. 原理与方法2.1 知识对比2.2 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"加密包crypto"相关的内容&#xff0c;本章回中将介绍characters包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 在项目中会遇到获取字…

解决vscode报错,在赋值前使用了变量“XXX“

问题&#xff1a;如图所示 解决方法&#xff1a; 法一&#xff1a; 补全函数使其完整 法二&#xff1a; 使用断言

Python算法探索:从经典到现代

目录 引言 一、经典算法&#xff1a;快速排序 示例代码&#xff1a; 二、经典算法&#xff1a;二分查找 示例代码&#xff1a; 三、现代算法&#xff1a;支持向量机&#xff08;SVM&#xff09; 示例代码&#xff1a; 四、现代算法&#xff1a;神经网络 示例代码&…

从汇编分析C语言可变参数的原理,并实现一个简单的sprintf函数

C语言可变参数 使用printf等函数的时候函数原型是printf(const char* fmt, ...), 这一类参数的个数不限的函数是可变参数 使用 使用一个头文件stdarg.h, 主要使用以下的宏 typedef char * va_list;// 把 n 圆整到 sizeof(int) 的倍数 #define _INTSIZEOF(n) ( (sizeo…

STM32 USART串口通信

目录 USART串口 串口发送 串口发送接收 串口收发HEX数据包 串口收发文本数据包 USART串口 串口发送 Serial.c #include "stm32f10x.h" // Device header #include "stdio.h" #include "stdarg.h"/*** brief 初始化串口以…

leetcode:96.不同的二叉搜索树

解题思路&#xff1a; 输入n3 n 0 1个 n 1 1个 n 2 2个 头1头2头3 头1 左子树0节点&#xff08;个数&#xff09;x右子树2个节点&#xff08;个数&#xff09; 头2 左子树1节点&#xff08;个数&#xff09;x右子树1个节点&#xff08;个数&#xff09; 头3 左子…

Android 13.0 SystemUI下拉状态栏定制二 锁屏页面横竖屏解锁图标置顶显示功能实现

1.前言 在13.0的系统rom定制化开发中,在关于systemui的锁屏页面功能定制中,由于在平板横屏锁屏功能中,时钟显示的很大,并且是在左旁边居中显示的, 由于需要和竖屏显示一样,所以就需要用到小时钟显示,然后同样需要居中,所以就来分析下相关的源码,来实现具体的功能 如图…

租赁香港服务器多少钱一个月?24元

阿里云香港服务器2核1G、30M带宽、40GB ESSD系统盘优惠价格24元/月&#xff0c;288元一年&#xff0c;每月流量1024GB&#xff0c;多配置可选&#xff0c;官方优惠活动入口 https://t.aliyun.com/U/bLynLC 阿里云服务器网aliyunfuwuqi.com分享阿里云香港服务器优惠活动、详细配…

VMware Workstation 17.0 虚拟机的安装、配置、创建运行DOS、Windows、Linux和VMware ESX(详细图文搭建系统教程)

VMware Workstation 17.0 虚拟机的安装、配置、创建运行DOS、Windows、Linux和VMware ESX&#xff08;图文教程&#xff09; 一、VMware Workstation是什么&#xff1f;1.1 VMware Workstation 17.0简介1.2 VMware Workstation 17.0新特性1.3 VMware Workstation 17.0下载地址1…

内容安全审核系统的设计思路

今年负责的APP产品涉及到内容的审核&#xff0c;并且针对性的做了一套内容审核系统和账号安全体系。因此总结了一些经验。 内容审核基础逻辑&#xff1a; 内容类型&#xff1a;文本、图片、视频、音频 审核类型&#xff1a;涉黄、暴恐、涉政、广告、垃圾违禁、辱骂自定义&…

【Git】.gitignore 的匹配规则

每行一个规则&#xff1a;每行只能包含一个规则&#xff0c;多个规则需要分别写在不同的行上。 示例&#xff1a; # 忽略日志文件 logs/ # 忽略临时文件 temp.txt种类匹配&#xff1a; 文件&#xff1a;在规则的开头指定文件名或路径&#xff0c;如 file.txt。 示例&#xff1a…

leetcode hot100不同路径

本题可以采用动态规划来解决。还是按照五部曲来做 确定dp数组&#xff1a;dp[i][j]表示走到&#xff08;i&#xff0c;j&#xff09;有多少种路径 确定递推公式&#xff1a;我们这里&#xff0c;只有两个移动方向&#xff0c;比如说我移动到&#xff08;i&#xff0c;j&#x…