【笔记】WSL 中 Rust 安装与测试完整记录

news2025/6/12 6:00:17

#工作记录

WSL 中 Rust 安装与测试完整记录

1. 运行环境

  • 系统:Ubuntu 24.04 LTS (WSL2)
  • 架构:x86_64 (GNU/Linux)
  • Rust 版本:rustc 1.87.0 (2025-05-09)
  • Cargo 版本:cargo 1.87.0 (2025-05-06)

 


2. 安装 Rust

2.1 使用 Rust 官方安装脚本

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

 rustup.rs - Rust 工具链安装程序

  • Rustup 是 Rust 官方推荐的版本管理工具,可以安装多个 Rust 版本并切换。
  • 安装位置
    • Rustup 数据存储在 /home/用户名/.rustup
    • Cargo(Rust 包管理器)存储在 /home/用户名/.cargo
    • Rust 工具链(编译器 rustc,包管理器 cargo,格式化工具 rustfmt,Lint 解析工具 clippy)都安装在 /home/用户名/.cargo/bin

 

 

2.2 选择安装选项

安装脚本会提供选项:

1) Proceed with standard installation (default)
2) Customize installation
3) Cancel installation

选择 1 进行标准安装。

2.3 安装过程

Rustup 会自动:

  1. 同步最新的 Rust 版本(Stable 1.87.0)。
  2. 下载和安装 Rust 相关组件
    • Cargo(包管理器)
    • Clippy(代码检查工具)
    • Rust Docs(文档)
    • Rust 标准库 (rust-std)
    • Rust 编译器 (rustc)
    • Rustfmt(格式化工具)

3. 配置环境变量

安装完成后,需要更新 PATH 以让系统识别 cargorustc

source ~/.bashrc

或:

. "$HOME/.cargo/env"

验证 Rust 版本:

rustc --version  # rustc 1.87.0 (2025-05-09)
cargo --version  # cargo 1.87.0 (2025-05-06)

 


4. 创建 Rust 项目

使用 cargo new 创建项目:

cargo new hello_rust

会生成:

hello_rust/
├── Cargo.toml  # 项目配置文件(依赖管理)
└── src/
    └── main.rs  # 入口文件

 

4.1 处理已有目录

如果 cargo new hello_rust 报错(因为运行了两次cargo new hello_rust命令导致):

 

error: destination `/home/love/hello_rust` already exists

表示该目录已存在,可以改用:

cargo init hello_rust

 

这样 Cargo 会初始化一个现有目录,使其成为 Rust 项目,而不会创建重复的文件。

4.2 查看项目结构

可以安装 tree 来更清晰地查看目录结构:

sudo apt install tree

 

然后运行:

tree hello_rust

 

我们应该看到:

hello_rust
├── Cargo.lock
├── Cargo.toml
├── src
│   └── main.rs
└── target

4.3 进入项目目录

cd hello_rust

4.4 编辑 main.rs

使用 nano 编辑 src/main.rs

nano src/main.rs

写入:

fn main() {
    println!("Hello, world!");
}

然后 保存并退出Ctrl + XYEnter)。

 


5. 编译和运行 Rust 程序

5.1 编译

cargo build

编译完成后,会在 target/debug/ 下生成可执行文件。

5.2 运行

cargo run

成功的话,我们会看到:

Hello, world!

 


6. 其他 Rust 命令

6.1 检查代码

cargo check

这会进行语法检查,但不会生成二进制文件。

 

6.2 格式化代码

cargo fmt

自动格式化 .rs 文件。

 

6.3 运行代码 Lint 检查

cargo clippy

提供代码优化建议。


7. 总结

安装 Rust 成功 (rustc 1.87.0)
Rust 配置正确 (cargo 可用)
初始化现有 Rust 目录 (cargo init hello_rust)
安装 tree 后可以正确查看项目结构
成功编译并运行 Hello, World! 程序

🎉 我们的 WSL Rust 开发环境已成功搭建,可以开始写代码了!🚀

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

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

相关文章

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…

使用LangGraph和LangSmith构建多智能体人工智能系统

现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…

深度学习水论文:mamba+图像增强

🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…

云原生安全实战:API网关Kong的鉴权与限流详解

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…