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

news2024/11/27 9:38:24

文章目录

  • 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

在这里插入图片描述

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

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

相关文章

数据分类分级概念、方法

数据分类分级概念: 根据《GB/T 38667-2020 信息技术-大数据-数据分类指南》的定义,数据分类是根据数据的属性或特征,按照一定的原则和方法进行区分和归类,以便更好地管理和使用数据。数据分类不存在唯一的分类方式,会…

KKVIEW远程远程访问家里电脑

远程访问家里电脑:简易指南与价值所在 在数字化时代,电脑已成为我们日常生活和工作中不可或缺的工具。有时,我们可能在外出时急需访问家中电脑里的某个文件或应用,这时,远程访问家里电脑就显得尤为重要。本文将简要介…

中移物联网 OneOS 操作系统环境搭建和工程创建

一、官网 OneOS Lite是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-A和 Cortex-M、MIPS、RISC-V等主流芯片架构,兼容POSIX、CMSIS等标准接口,支持Javascript、MicroPyt…

异构超图嵌入的图分类 笔记

1 Title Heterogeneous Hypergraph Embedding for Graph Classification(Xiangguo Sun , PictureHongzhi Yin , PictureBo Liu , PictureHongxu Chen , PictureJiuxin Cao , PictureYingxia Shao , PictureNguyen Quoc Viet Hung)【WSDM 2021】 2 Co…

【Dijkstra单源最短路径解法】蓝桥杯2022年第十三届决赛真题-出差

我也来贡献一份题解:Dijkstra单源最短路径的简单变式【简单C代码】 这道题的前置知识的Dijkstra单源最短路径算法 如果还没学过,建议去看AcWing算法教程的**图论(2)**中最短路径问题的讲解,u1s1–y总讲的是真的通透! 思路 这道题和单源最短路…

【AI面试】FPN、PANet、SPP、ASPP、Adaptive feature pooling

经常可以看到各个论文发出来,加入的各种trick。这些改进点,一般都是在前人的基础上,进行了一些修改。比如FPN到PANet的改进,就是为了改进前者存在的一些问题。 这里就把这些trick,给汇集到一起,看看他们的发展历史,看看他们之间有什么区别,又是在哪些地方做的改进。这…

C++ stl容器string的底层模拟实现

目录 前言: 1.成员变量 2.构造函数与拷贝构造函数 3.析构函数 4.赋值重载 5.[]重载 6.比较关系重载 7.reserve 8.resize 9.push_back,append和重载 10.insert 11.erase 12.find 14.迭代器 15.流插入,流提取重载 16.swap 17.c_str 18.完…

【Linux】shell脚本实战-if单双分支条件语句详解

if单分支 在所有的编程语言里面&#xff0c;if条件语句几乎是最简单的语句格式&#xff0c;且用途最广。 当if后面的<条件表达式>成立&#xff08;真&#xff09;的时候&#xff0c;就会执行then后面的指令或语句&#xff0c;否则&#xff0c;就会忽略then后面的指令或…

鸿蒙开发学习笔记第一篇--TypeScript基础语法

目录 前言 一、ArkTS 二、基础语法 1.基础类型 1.布尔值 2.数字 3.字符串 4.数组 5.元组 6.枚举 7.unkown 8.void 9.null和undefined 10.联合类型 2.条件语句 1.if语句 1.最简单的if语句 2.if...else语句 3.if...else if....else 语句 2.switch语句 5.函数…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十 简单视频浮雕画效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十 简单视频浮雕画效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十 简单视频浮雕画效果 一、简单介绍 二、简单视频浮雕画效果实现原理 三、简单视频浮雕画效果…

基于微信小程序的短文写作竞赛管理系统

采用技术 基于微信小程序的短文写作竞赛管理系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 小程序端 登录 首页 竞赛信息界面 竞赛成果界面 学生…

2024个人动态线条导航HTML源码

源码介绍 2024个人导航HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 源码下载 2024个人导航HTML源码

Django Rest Framework的序列化和反序列化

Django Rest Framework的序列化和反序列化 目录 Django Rest Framework的序列化和反序列化Django传统序列化Django传统反序列化安装DRF序列化器serializers序列化反序列化反序列化保存instance和data CBV和APIView执行流程源码解析CBV源码分析APIView源码分析 DRF的Request解析…

KVM部署

1、检查虚拟化支持 首先&#xff0c;确认你的系统处理器支持硬件虚拟化&#xff0c;在Linux终端中&#xff0c;使用以下命令&#xff1a; egrep -c (vmx|svm) /proc/cpuinfo2、安装KVM及其工具 yum update yum install qemu-kvm libvirt libvirt-python libguestfs-tools vi…

FPGA - 以太网UDP通信(二)

一&#xff0c;引言 前文链接&#xff1a;FPGA - 以太网UDP通信&#xff08;一&#xff09; 在上文章中介绍了以太网简介&#xff0c;以太网UDP通信硬件结构&#xff0c;以及PHY芯片RGMII接口-GMII接口转换逻辑&#xff0c;接下来介绍UDP通信结构框图以及数据链路层&#xff…

政安晨:【Keras机器学习实践要点】(二十六)—— 内卷神经网络

目录 简介 设置 卷积 演变 测试逆卷积层 图像分类 获取 CIFAR10 数据集 数据可视化 卷积神经网络 逆向传播神经网络 比较 损失图和准确率图 可视化卷积核 结论 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Ke…

从 SQLite 3.5.9 迁移到 3.6.0(二十一)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;从 SQLite 3.4.2 迁移到 3.5.0&#xff08;二十&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 ​SQLite 版本 3.6.0 &#xff08;2008-07-16&#xff09; 包含许多更改。按照惯例 SQLite项目&#xff…

FPGA在医疗的应用,以4K医疗内窥镜为例

前言 随着技术的发展&#xff0c;医学影像作为科学技术的主要成就之一&#xff0c;在无创诊断和治疗领域已经有了多种应用。其中一个应用是内窥镜&#xff0c;在20世纪90年代&#xff0c;当利用电荷耦合装置将图像传输到显示器上成为可能时&#xff0c;内窥镜变得更加广泛。为…

自动化测试框架 Selenium(3)

目录 1.前言 2.等待方式 2.1死等 2.2智能等待 3.游览器操作 3.1游览器最大化 3.2设置游览器的宽 高 3.3 游览器的前进和后退 3.4游览器滚动条 1.前言 本篇博客,我们将继续Selenium自动化测试的学习.在前面的章节中,俺介绍了Selenium是怎么回事,和键盘鼠标操作.还有url和…

数据应用OneID:ID-Mapping Spark GraphX实现

前言 说明 以用户实体为例&#xff0c;ID 类型包含 user_id 和 device_id。当然还有其他类型id。不同id可以获取到的阶段、生命周期均不相同。 device_id 生命周期通常指的是一个设备从首次被识别到不再活跃的整个时间段。 user_id是用户登录之后系统分配的唯一标识&#xff…