Rust语言入门第二篇-Cargo教程

2024-04-12 08:28

本文主要是介绍Rust语言入门第二篇-Cargo教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Rust语言入门第二篇-Cargo教程
    • 一,Cargo 是什么
    • 二,Cargo教程
      • Cargo.toml文件
      • src/main.rs 文件
      • 构建并运行Cargo项目

Rust语言入门第二篇-Cargo教程

本节提供对cargo命令行工具的快速了解。我们演示了它为我们生成新包的能力,它在包内编译crate的能力,以及它运行生成的程序的能力。

一,Cargo 是什么

Cargo 是 Rust 的官方构建系统和包管理器。它负责管理 Rust 项目的依赖项、构建项目以及管理项目的配置。

二,Cargo教程

要使用 Cargo 创建一个新的 Rust 项目,请使用Cargo new

cargo new hello_world

第一行命令新建了名为 hello_world 的目录和项目。我们将项目命名为 hello_world,同时 Cargo 在一个同名目录中创建项目文件。
在这里插入图片描述
非常抱歉,我创建了两个项目 hello_world以及hello_cargo我后面进错文件了,就讲错就错吧

cd 是命令行中常用的命令,用于改变当前工作目录。
执行cd 命令 输入文件名称 使进入hello_cargo文件目录中

cd hello_cargo

在这里插入图片描述

tree . 是一个命令,用于在命令行中显示当前目录下的目录结构,以树状图的形式展示。在这个命令中,. 表示当前目录。执行 tree . 命令会递归地列出当前目录下的所有文件和子目录,并以树状结构展示它们的层次关系。

tree .

并列出文件。将会看到 Cargo 生成了两个文件和一个目录:一个 Cargo.toml 文件,一个 src 目录,以及位于 src 目录中的 main.rs 文件。
在这里插入图片描述

Cargo.toml文件

在上述我们创建了项目,接下来我们根据文件地址去找到该文件,选用文本编辑器打开 Cargo.toml 文件

[package]
name = "hello_world"
version = "0.1.0"
edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]

这个 Cargo 文件描述了一个 Rust 项目的元数据和依赖项。下面是对文件内容的解析:

  1. [package] 是一个片段(section)标题,表示接下来的内容是关于项目包的配置。:

    • name = "hello_world":指定了项目的名称为 “hello_world”。
    • version = "0.1.0":指定了项目的版本号为 “0.1.0”。
    • edition = "2021":指定了 Rust 编译器所使用的 Edition(版本),这里是 2021 Edition。
  2. [dependencies] 部分:

    • 这个部分通常用于列出项目所依赖的外部库。在这个示例中,没有列出任何依赖项,意味着这个项目没有依赖其他外部库。

Cargo 文件还可以包含其他部分,比如 [workspace][profile] 等,用于配置工作空间和编译器参数等。这些部分不是必需的,取决于项目的需要。

在这里插入图片描述

src/main.rs 文件

Cargo 为你生成了一个 “Hello, world!” 程序,Cargo 期望源文件存放在 src 目录中。

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

这段 Rust 代码定义了一个程序的入口点(main 函数),并在控制台打印 “Hello, world!” 消息。

让我解释一下代码的具体含义:

  • fn main():这是 Rust 程序的入口点。在 Rust 中,每个可执行程序必须有一个名为 main 的函数作为入口点。这个函数不接受任何参数,并且不返回任何值。

  • {}:这是代码块的开始和结束标记,包含了 main 函数的实际代码。

  • println!("Hello, world!");:这是一个 Rust 宏调用,用于在控制台输出文本。println! 是 Rust 标准库中的一个宏,用于格式化打印到标准输出流(通常是终端)。在这里,它打印了 “Hello, world!” 消息。

因此,这段代码的含义是:定义了一个程序的入口点 main 函数,并在程序执行时打印了 “Hello, world!” 消息到控制台。

构建并运行Cargo项目

cargo build

cargo build 是 Rust 项目管理工具 Cargo 提供的一个命令,用于编译 Rust 项目。

具体而言,cargo build 命令的含义是:

  1. 编译项目代码:Cargo 会根据项目根目录下的 Cargo.toml 文件中的配置信息,编译整个 Rust 项目的源代码。

  2. 生成可执行文件或库:根据项目类型(可执行程序或库),Cargo 会生成对应的可执行文件(通常在 target/debug 目录下)或者库文件(通常在 target/debug 目录下),这取决于项目的配置和 Cargo.toml 文件中的指定。

  3. 处理依赖关系:如果项目依赖了其他的 Rust crate(包),Cargo 会自动下载并编译这些依赖,以确保项目的所有依赖都被正确处理和链接。

  4. 检查代码:Cargo 会在编译过程中执行各种检查,包括语法检查、类型检查、错误检查等,以确保代码的质量和正确性。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这个命令会创建一个可执行文件 target/debug/hello_cargo (在 Windows 上是 target\debug\hello_cargo.exe),而不是放在目前目录下。由于默认的构建方法是调试构建(debug build),Cargo 会将可执行文件放在名为 debug 的目录中。可以通过这个命令运行可执行文件:

$ ./target/debug/hello_cargo # 或者在 Windows 下为 .\target\debug\hello_cargo.exe

在这里插入图片描述

我们也可以使用编译然后运行它,所有这些都在一个步骤中完成:cargo run

cargo run

在这里插入图片描述

这篇关于Rust语言入门第二篇-Cargo教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896612

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

Rust 智能指针的使用详解

《Rust智能指针的使用详解》Rust智能指针是内存管理核心工具,本文就来详细的介绍一下Rust智能指针(Box、Rc、RefCell、Arc、Mutex、RwLock、Weak)的原理与使用场景,... 目录一、www.chinasem.cnRust 智能指针详解1、Box<T>:堆内存分配2、Rc<T>:

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配