rust学习-初识rust

news2025/1/5 8:20:13

rust学习-初识rust

  • 什么是 Rust?
  • Rust 的特点
  • 什么是 Cargo?
  • Cargo 的主要功能
  • 使用 Cargo 创建和管理项目
  • Cargo.toml 文件详解
  • 常用 Cargo 命令
  • 什么是 Rustup?
  • Rustup 的主要功能
  • 安装 Rustup
  • 验证安装
  • 使用 Rustup 管理工具链
  • 使用 Rustup 管理目标平台
  • 使用 Rustup 管理组件
  • 使用 Rustup 管理配置文件

什么是 Rust?

Rust 是一种系统编程语言,由 Mozilla 研究院开发并于 2012年首次发布。它旨在提供内存安全、并发安全和零成本抽象的特性,同时保持高性能。Rust 的设计目标是替代 C++在系统编程中的地位,特别是在需要高性能和安全性的场景中

Rust 的特点

  1. 内存安全:Rust 通过其所有权系统(Ownership System)和借用检查器(Borrow Checker)来保证内存安全,避免常见的内存错误如空指针、悬空指针和数据竞争
  2. 零成本抽象:Rust 可使用高级抽象,而不需要为此付出运行时性能的代价。这使得代码既安全又高效
  3. 并发安全:Rust 的类型系统和所有权模型确保了并发代码的安全性,避免数据竞争
  4. 跨平台支持:Rust 可以在多种平台上运行,包括 Linux、Windows、macOS 等
  5. 社区和生态:Rust 有一个活跃的开源社区,提供了丰富的库和工具,形成了强大的生态系统

什么是 Cargo?

Cargo 是 Rust 的包管理器和构建系统。它负责管理项目的依赖、编译代码、运行测试以及发布包。Cargo 使得 Rust项目的管理变得更加简单和高效

Cargo 的主要功能

  1. 项目创建:Cargo 可快速创建一个新的 Rust 项目
  2. 依赖管理:Cargo 可自动下载和管理项目所需的依赖库
  3. 构建系统:Cargo 负责编译项目,并处理所有的编译选项和优化
  4. 测试运行:Cargo 可以运行项目的单元测试和集成测试
  5. 发布管理:Cargo 可以将项目打包并发布到 crates.io(Rust 的官方包仓库)

使用 Cargo 创建和管理项目

  1. 安装 Rust 和 Cargo
    首先需要安装 Rust 和 Cargo。可以通过以下命令安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装完成后,Rust 和 Cargo 将会自动安装到你的系统中

  1. 创建新项目
    可通过以下命令创建一个新的项目:
cargo new hello_world

这条命令会创建一个名为 hello_world 的目录,并在其中生成一个新的 Rust 项目

生成的项目结构如下:

hello_world/
├── Cargo.toml
└── src
    └── main.rs
  • Cargo.toml 是项目的配置文件,包含了项目的基本信息和依赖
  • src/main.rs 是项目的主代码文件,默认包含一个简单的 “Hello, world!” 程序
  1. 构建和运行项目
    在项目目录中,可以使用以下命令来构建和运行项目:
cargo build

这条命令会编译项目,并在 target/debug 目录下生成可执行文件

要运行项目,可以使用:

cargo run

这条命令会先编译项目(如果代码有变化),然后运行生成的可执行文件

  1. 添加依赖
    Rust 项目通常依赖于外部的库,可以在 Cargo.toml 文件中添加依赖项。例如,假设若想要使用 rand 库来生成随机数,可以在 Cargo.toml 中添加以下内容:
[dependencies]
rand = "0.8"

保存文件后,运行 cargo build,Cargo 会自动从 crates.io 下载并编译 rand 库

  1. 运行测试
    Rust 内置了对单元测试的支持,可以在代码中编写测试函数,并使用 Cargo 运行这些测试
    例如,在 src/main.rs 中添加一个简单的测试:
#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {
        assert_eq!(2 + 2, 4);
    }
}

然后运行测试:

cargo test

Cargo 会自动查找并运行所有的测试函数

  1. 发布项目
    当准备好发布项目时,可以使用 cargo build --release 来生成优化的构建版本:
cargo build --release

生成的可执行文件将位于 target/release 目录下,并且经过了充分的优化,适合用于生产环境

Cargo.toml 文件详解

Cargo.toml 是 Cargo 的配置文件,包含了项目的基本信息和依赖项。以下是 Cargo.toml 的一个示例:

[package]
name = "hello_world"
version = "0.1.0"
edition = "2021"

[dependencies]
rand = "0.8"

[build-dependencies]
cc = "1.0"

[dev-dependencies]
tempfile = "3.1"

[features]
default = []

[profile.dev]
opt-level = 1

[profile.release]
opt-level = 3
  • [package]:定义了项目的基本信息,如项目名称、版本号和使用的 Rust 版本
  • [dependencies]:列出了项目所依赖的外部库及其版本号
  • [build-dependencies]:列出了构建项目时所需的依赖库
  • [dev-dependencies]:列出了仅在开发环境中使用的依赖库,例如测试工具
  • [features]:用于定义项目的功能特性,可以在编译时启用或禁用某些功能
  • [profile.dev] 和 [profile.release]:定义了不同构建配置下的编译选项

常用 Cargo 命令

  • cargo new :创建一个新项目
  • cargo build:编译项目
  • cargo run:编译并运行项目
  • cargo test:运行项目的测试
  • cargo check:检查代码的语法和类型,但不进行编译
  • cargo update:更新项目的依赖
  • cargo doc:生成项目的文档
  • cargo publish:将项目发布到 crates.io

什么是 Rustup?

Rustup 是 Rust 的官方工具链管理工具。可轻松地安装、管理和切换不同版本的 Rust编译器(rustc)和相关的工具链。Rustup 是 Rust 生态系统的重要组成部分,它使得开发者能够在不同的 Rust版本之间无缝切换,并且能够轻松地安装和管理 Rust 的工具链

Rustup 的主要功能

  1. 安装 Rust:Rustup 是安装 Rust 的推荐方式。它不仅可以安装 Rust 编译器,还可以安装 Cargo、Rust 文档和其他工具
  2. 管理工具链:Rustup 可安装和管理多个 Rust 工具链。你可以轻松地在稳定版、测试版和 nightly 版之间切换
  3. 更新 Rust:Rustup 可以自动检查并更新 Rust 工具链到最新版本
  4. 跨平台支持:Rustup 支持多种操作系统,包括 Linux、Windows 和 macOS
  5. 自定义工具链:Rustup 可安装自定义的工具链,例如针对特定目标平台的工具链

安装 Rustup

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

这条命令会下载并运行 Rustup 的安装脚本,安装过程中,可选择默认的安装选项,或者根据需要进行自定义配置
安装完成后,Rustup 会自动将 Rust 工具链添加到对应的系统路径中

验证安装

安装完成后,可以通过以下命令验证 Rust 和 Rustup 是否安装成功:

rustc --version
cargo --version
rustup --version

这些命令会分别输出 Rust 编译器、Cargo 和 Rustup 的版本信息

使用 Rustup 管理工具链

  1. 安装不同的工具链
    Rustup 可安装多个 Rust 工具链。可以通过以下命令安装不同的工具链:
  • 稳定版(Stable):这是 Rust 的稳定版本,适合大多数生产环境
rustup toolchain install stable
  • 测试版(Beta):这是 Rust 的测试版本,包含了即将发布的稳定版功能
rustup toolchain install beta
  • Nightly 版:这是 Rust 的每日构建版本,包含了最新的功能和实验性特性
rustup toolchain install nightly
  1. 切换工具链
    可以使用 rustup default 命令来切换默认的工具链。例如,切换到 nightly 版:
rustup default nightly

可以在特定项目中使用不同的工具链,而不影响全局默认设置。例如,在项目目录中运行:

rustup override set nightly

这条命令会为当前项目设置 nightly 工具链

  1. 列出已安装的工具链
    可以使用以下命令列出所有已安装的工具链:
rustup toolchain list
  1. 更新工具链
    Rustup 可以自动检查并更新已安装的工具链。可以通过以下命令更新所有工具链:
rustup update
  1. 卸载工具链
    如果不再需要某个工具链,可以使用以下命令卸载它:
rustup toolchain uninstall nightly

使用 Rustup 管理目标平台

Rustup 可为不同的目标平台安装和配置工具链。例如可为交叉编译安装目标平台的工具链

  1. 添加目标平台
    可以使用以下命令为目标平台添加工具链。例如,为 x86_64-unknown-linux-musl 目标平台添加工具链:
rustup target add x86_64-unknown-linux-musl
  1. 列出已安装的目标平台
    可以使用以下命令列出所有已安装的目标平台:
rustup target list
  1. 移除目标平台
    如果不再需要某个目标平台,可以使用以下命令移除它:
rustup target remove x86_64-unknown-linux-musl

使用 Rustup 管理组件

Rustup 可安装和管理 Rust 的组件,例如 rust-docs、rust-src 和 clippy

  1. 安装组件
    可以使用以下命令安装组件。例如,安装 rust-docs 组件:
rustup component add rust-docs
  1. 列出已安装的组件
    可以使用以下命令列出所有已安装的组件:
rustup component list
  1. 移除组件
    如果不再需要某个组件,可以使用以下命令移除它:
rustup component remove rust-docs

使用 Rustup 管理配置文件

Rustup 可管理不同的配置文件,例如 default、minimal 和 complete。这些配置文件定义了安装 Rust时包含的组件

  1. 查看当前配置文件
    可以用下命令查看当前的配置文件:
rustup show profile
  1. 切换配置文件
    可以使用以下命令切换配置文件。例如,切换到 minimal 配置文件:
rustup set profile minimal

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

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

相关文章

1月第二讲:WxPython跨平台开发框架之图标选择界面

1、图标分类介绍 这里图标我们分为两类,一类是wxPython内置的图标资源,以wx.Art_开始。wx.ART_ 是 wxPython 提供的艺术资源(Art Resource)常量,用于在界面中快速访问通用的图标或位图资源。这些资源可以通过 wx.ArtP…

【弱监督视频异常检测】2024-TCSVT-基于片段间特征相似度的多尺度时间 MLP 弱监督视频异常检测

2024-TCSVT-Inter-clip Feature Similarity based Weakly Supervised Video Anomaly Detection via Multi-scale Temporal MLP 基于片段间特征相似度的多尺度时间 MLP 弱监督视频异常检测摘要1. 引言2. 相关工作A. 分布外检测B. 弱监督视频异常检测C. 多层感知器 3. 方法A. 概述…

C# OpenCV机器视觉:凸包检测

在一个看似平常却又暗藏玄机的午后,阿强正悠闲地坐在实验室里,翘着二郎腿,哼着小曲儿,美滋滋地品尝着手中那杯热气腾腾的咖啡,仿佛整个世界都与他无关。突然,实验室的门 “砰” 的一声被撞开,小…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-44

文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么&#xff…

8.若依系统监控与定时任务

帮助开发者和运维快速了解应用程序的性能状态。 数据监控 定时任务 实现动态管理任务。 需求:每间隔5s,控制台输出系统时间。 新建的任务类必须在指定目录ruoyi-quartz模块下的task包下。 状态设置为启动 执行策略 场景:比如一个任务每个…

【JAVA高级篇教学】第六篇:Springboot实现WebSocket

在 Spring Boot 中对接 WebSocket 是一个常见的场景,通常用于实现实时通信。以下是一个完整的 WebSocket 集成步骤,包括服务端和客户端的实现。本期做个简单的测试用例。 目录 一、WebSocket 简介 1. 什么是 WebSocket? 2. WebSocket 的特…

【YOLO 项目实战】(12)红外/可见光多模态目标检测

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO 项目实战】(10)YOLO8 环境配置与推理检测 【YOLO 项目实战】(11)YOLO8 数据集与模型训练 【YOLO 项目实战】(12)红外/可…

Ubuntu开机The root filesystem on /dev/sdbx requires a manual fsck 问题

出现“Manual fsck”错误可能由以下几种原因引起: 不正常关机:如果系统意外断电或被强制重启,文件系统可能未能正确卸载,导致文件系统损坏。磁盘故障:硬盘的物理损坏可能会引发文件系统错误。文件系统配置问题&#x…

RFSOC 47dr Dp口测试(ARM裸机)

47DR 内核还是一个4核A53的MPSOC,测试方式和MPSOC一样 首先设置好BD文件 编译好BIT设置VITIS工程 examle工程测试即可 但是本人硬件会跑飞不知道为何,通过注释掉下图的子函数得以解决 值得注意的是,最好用HP的线,不要用DP转…

protobuf: 通讯录2.1

先引入需要知道的proto3语法: 1.proto3 1.hexdump 作用: hexdump:是Linux下的⼀个⼆进制⽂件查看⼯具,它可以将⼆进制⽂件转换为ASCII、⼋进制、 ⼗进制、⼗六进制格式进⾏查看。 -C: 表⽰每个字节显⽰为16进制和相应的ASCI…

电子应用设计方案81:智能AI冲奶瓶系统设计

智能 AI 冲奶瓶系统设计 一、引言 智能 AI 冲奶瓶系统旨在为父母或照顾者提供便捷、准确和卫生的冲奶服务,特别是在夜间或忙碌时,减轻负担并确保婴儿获得适宜的营养。 二、系统概述 1. 系统目标 - 精确调配奶粉和水的比例,满足不同年龄段婴…

职场常用Excel基础01-数据验证

大家好,excel在职场中使用非常频繁,今天和大家一起分享一下excel中数据验证相关的内容~ 在Excel中,数据验证(Data Validation)是一项非常有用的功能,它可以帮助用户限制输入到单元格中的数据类型和范围&am…

Kubernetes Gateway API-3-TLS配置

1 简介 Gateway API 允许使用多种方式配置 TLS。本文档列出了各种TLS设置,并给出了如何有效使用它们的一般指南。 尽管本文档涵盖了 Gateway API 最常见的TLS配置形式,但某些实现也可能提供特定于实现的扩展,允许不同或更高级形式的TLS配置。除此文档外,值得阅读你所使用…

OpenGL入门最后一章观察矩阵(照相机)

前面的一篇文章笔者向大家介绍了模型变化矩阵,投影矩阵。现在只剩下最后一个观察矩阵没有和大家讲了。此片文章就为大家介绍OpenGL入门篇的最后一个内容。 观察矩阵 前面的篇章当中,我们看到了即使没有观察矩阵,我们也能对绘制出来的模型有一…

3.CSS字体属性

3.1字体系列 CSS使用font-family属性定义文本的字体系列。 p{font-family:"微软雅黑"} div{font-family:Arial,"Microsoft Yahei",微软雅黑} 3.2字体大小 css使用font-size属性定义字体大小 p{ font-size:20px; } px(像素)大小是我们网页的最常用的单…

Spring-kafka快速Demo示例

使用Spring-Kafka快速发送/接受Kafka消息示例代码&#xff0c;项目结构是最基础的SpringBoot结构&#xff0c;提前安装好Kafka&#xff0c;确保Kafka已经正确启动 pom.xml&#xff0c;根据个人情况更换springboot、java版本等 <?xml version"1.0" encoding&qu…

R语言统计分析——自助法BOOTSTRAP(1)

参考资料&#xff1a;R语言实战【第2版】 所谓自助法&#xff0c;即从初始样本重复随机替换抽样&#xff0c;生成一个或一系列待检验统计量的经验分布。无需假设一个特定的理论分布&#xff0c;便可生成统计量的置信区间&#xff0c;并能检验统计假设。 举个例子&#xff1a; 我…

yolo数据集格式(txt)转coco格式,方便mmyolo转标签格式

近期使用mmyolo过程中发现工具自带的yolo2coco.py在转换完数据集格式后&#xff0c;可视化标签的时候会有标签错乱情况&#xff0c;具体原因也没找到&#xff0c;肯定是转换过程代码有问题&#xff0c;于是重新做一份代码直接从yolo数据集转化为coco的json格式。 代码如下&…

sonarqube 安装及使用

一、官网参考地址 相关版本下载地址 配置全局变量 .bash_profileexport SONAR_HOME=/Users/jd/soft/sonar-scanner-6.2.1.4610 export PATH=$PATH:$SONAR_HOME/bin export SQ_HOST=http://127.0.0.1:9000/ export SQ_TOKEN=squ_dbb1913e095a92a727a918a9ba6b1af94b007748二、…

Kafka中的Topic和Partition有什么关系?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka中的Topic和Partition有什么关系&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka中的Topic和Partition有什么关系&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Apache Kafka 中&#…