002、使用 Cargo 创建新项目,打印 Hello World

1. Cargo 简介

        Cargo 是 Rust 的构建系统和包管理工具,比如构建代码、下载依赖的库、构建这些库等等。在安装 Rust 时,Cargo也会一起安装。

2. 创建新项目的具体步骤

步骤1:

        我们在桌面新建一个文件夹,用于存放后面练习用的代码文件,我给它起的名字是 rust_demo。

步骤2:

        进入新建的这个文件夹,单击地址栏输入 cmd,接着按回车打开命令提示符窗口。

        当然,你也可以按住 shift键,然后在空白处鼠标右键 在此处打开 Powershell 窗口(S)。不管是命令提示符窗口还是Powershell 窗口都是可以使用的,这个根据你的偏好来就行。

        在窗口中输入 cargo new hello_world,然后回车。

        若创建成功,第二行会显示 Created binary (application) `hello_world` package ,然后我们再看文件夹里,也会多出一个子文件夹,名字就叫 hello_world 

        所以,cargo new hello_world,这个就是创建新项目的命令。

cargo new hello_world

步骤3:

        接下来就是在编译器中打开这个项目。我们在黑窗口中继续输入 code . 就可以快速从Visual Studio Code中打开此项目了。

        因此,如果我们要快速且便捷地打开某个 Rust 项目,就先点进该项目的文件夹,然后在该文件夹中打开黑窗口,输入 code . 就可以直接写代码啦!这个命令以及上面的用 Cargo 创建新项目的命令是非常常用的,一定要牢记哦!

code .

步骤4:

        在编译器中的左侧目录处,我们点开 src 文件夹,然后单击下面的 main.rs 文件,这里就是我们正式写代码的地方啦!

        让人哭笑不得的是,这里已经默认写好了一个输出 “Hello, world! ” 的代码了。不过没有关系,这几行代码非常简单,我直接来解释一下吧!

        首先,fn 关键字表示这里创建了一个函数,main 就是该函数的名称,()中是空的,表示该函数没有任何参数,{ } 花括号中是函数体。

        println! 是打印的意思,如果关键字后面带个叹号,则表示这是一个宏,用于在控制台输出格式化的字符串。这个宏与C语言中的 printf 函数类似,但更加强大和灵活。

        使用 println! 可以方便地输出各种数据类型,例如整数、浮点数、字符串等。它还支持使用格式化占位符来指定输出的格式,这个我们后面再细讲。

3. 检查、构建、运行代码

3.1 检查代码

        代码写好了,我们得先检查一下是否正确,不过这里不需要人为去检查,在 Rust中,只需要在黑窗口中输入如下命令即可:

cargo check

 

         可以看到,我连续输入了2次 cargo check 命令,2次检查的结果都是没问题的。cargo check 是检查代码的命令,可以确保代码是否能通过编译,但是它不会产生任何可执行文件。

        所以,我们可以连续、反复使用 cargo check 命令来检查代码,以此来提高效率。

3.2 构建代码

        构建代码的命令是:cargo build

cargo build

        第一次构建会在顶层目录生成一个 cargo.lock 文件,该文件负责追踪项目依赖的精确版本,不需要手动修改此文件,也不建议修改,它的具体作用我们后面再细讲。

3.3 运行代码

        运行代码的命令是:cargo run

cargo run

        执行这个命令,它会做两件事,一个是编译代码,二个是执行结果。意思就是,就算你中间不用 cargo build 命令去构建,直接用 cargo run 这个命令也是没问题的,它会同时把构建的事也做了。 

        可以看到,当我们执行 cargo run 命令后,Hello, world! 就直接被打印出来了,是不是很简单?

        当然,你也可以直接在编译器中运行代码,点击一下右上角的三角形按钮就可以啦!

4. 常用命令

        这里我整理了几个常用的命令,或许你可以用得到。虽然现在还不多,但是后面我遇到了会再加进去。

命令作用
cls清空黑窗口中的内容
cd ..返回上一层目录,执行一次则返回一次
dir显示当前目录中的文件名

5. 结语

        由于能力有限、本人也还在学习摸索阶段,文中难免有错漏之处,若有读者大大发现,欢迎在评论区留言。

        最后,码字不易,即便只有一个赞也可以让我动力满满,感谢你的支持!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vector的erase()方法遍历删除元素迭代器失效问题、及删除最后一个元素迭代器失效问题)

1.删除指定范围的元素 vector删除元素之pop_back(),erase(),remove() 向量容器vector的成员函数pop_back()可以删除最后一个元素. 而函数erase()可以删除由一个iterator指出的元素,也可以删除一个指定范围的元素。 还可以采用通用算法remove()来删除vector容器中的…

数字电子技术 一天速成

文章目录 一、数制与编码1. 数制转换2. BCD编码 二、逻辑代数1. 常见逻辑运算及逻辑门 三、化简逻辑表达式1. 卡诺图 求 表达式2. 表达式 画 卡诺图3. 卡诺图 化简 表达式4. 公式法 化简 表达式 ⭐⭐5. 表达式 求 反函数6. 卡诺图 求 反函数 四、组合逻辑电路的分析和设计1. 逻…

Mysql(5日志备份恢复)

一.日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data 先看下mysql的日志文件有无: 修改配置文件添加:错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启 修改配置文件添加:通用查…

.json文件转为.dll文件后还能读取吗?

(只是修改了后缀名而已&#xff0c;做一个伪装&#xff09; 测试&#xff1a; QFile file(QApplication::applicationDirPath() "/config.dll");qDebug()<<QApplication::applicationDirPath() "/config.dll";if (file.open(QIODevice::ReadOnly))…

设计模式--抽象工厂模式

实验4&#xff1a;抽象工厂模式 本次实验属于模仿型实验&#xff0c;通过本次实验学生将掌握以下内容&#xff1a; 1、理解抽象工厂模式的动机&#xff0c;掌握该模式的结构&#xff1b; 2、能够利用抽象工厂模式解决实际问题。 [实验任务]&#xff1a;人与肤色 使用抽象…

Netty—Reactor线程模型详解

文章目录 前言线程模型基本介绍线程模型分类Reactor线程模型介绍Netty线程模型&#xff1a; 传统阻塞IO的缺点Reactor线程模型单Reactor单线程模式单Reactor多线程模式主从Reactor多线程Reactor 模式小结 Netty 线程模型案例说明&#xff1a;Netty核心组件简介ChannelPipeline与…

服务运营 | 年终回顾:服务运营为您服务

文章作者&#xff1a;李舒湉&#xff0c;蔡君洋, Guo&#xff0c;陈盈鑫&#xff0c;王畅 编者按 在服务运营板块成立的第一年&#xff0c;给大家带来我们这一年中原创文章的年终回顾。迈向2024&#xff0c;服务运营继续为您服务 在服务运营板块成立的第一年&#xff0c;明确板…

预测块划分与亚像素精度:提升视频编码与图像处理的效率

在视频编码和图像处理中&#xff0c;预测块划分与亚像素精度是两项关键技术。本文将介绍预测块划分和亚像素精度的基本原理&#xff0c;探讨其在提高视频编码效率和图像处理精度方面的应用。 1. 预测块划分的基本原理 预测块划分是视频编码中的一项关键技术&#xff0c;它将图…

KCTF-Web-签到题

题目环境&#xff1a; 一道签到题 没有必要想那么麻烦 刚开始我以为是SQL注入 F12查源代码 在底部发现base64编码 进行base64解码ZmxhZ3t3ZTFjME1FX3RvXzB1Ul9jb050RVNUfQecho "ZmxhZ3t3ZTFjME1FX3RvXzB1Ul9jb050RVNUfQ" | base64 -d得到flag&#xff1a;flag{we1c0M…

spring状态机

1、概述 Spring State Machine 是一个用于处理状态机逻辑的框架&#xff0c;它提供了一种简洁的方法来定义状 态、转换以及在状态变更时触发的动作。 概念 状态 &#xff08; State &#xff09; &#xff1a;一个状态机至少要包含两个状态。例如自动门的例子&#xff0c;有 …

用芯片SIC8833可开发电子秤方案

SIC8833作为一款高性能的电子秤方案芯片&#xff0c;这款芯片是一个带24bitADC的8位RISC MCU&#xff0c;内置8k16位OTP程序存储器。具体24位双向I/O口的特性&#xff0c;广泛应用于电子衡器和精密测量及控制系统&#xff0c;能满足用户的不同需求和应用场景。 以下是电子秤方案…

盘古信息IMS-MOM制造运营管理系统,构建生产现场管理信息系统的最佳选择

在当今高度竞争的制造行业中&#xff0c;高效的生产管理是企业成功的关键。盘古信息IMS-MOM制造运营管理系统作为一款领先的管理系统其关键特性为制造企业构建生产现场管理信息系统提供了强大的优势。IMS-MOM不仅仅是一个软件系统&#xff0c;更是一种技术和管理手段的结合&…

【SQL经典题目】连续日期判断、同时在线人数、会话划分、间隔日期连续、日期交叉

【1.查询至少连续3天下单的用户】 思路1&#xff08;使用lead&#xff09;&#xff1a; distinct user_id,create_date去重&#xff0c;确保每个用户每天只有一条访问记录lead(create_date,2,‘9999-12-31’) over(partition by user_id order by create_date)根据用户分区&am…

力扣刷题记录(19)LeetCode:279、139

279. 完全平方数 这题和上篇文章的题类似&#xff0c;直接上代码 class Solution { public:int numSquares(int n) {vector<int> dp(n1,INT_MAX);dp[0]0;//j表示背包容量&#xff0c;dp[j]表示和为n的完全平方数的最少数量for(int i0;i*i<n;i){for(int ji*i;j<n;j…

【Java】springboot

文章目录 Spingboot1、起步依赖2、构建springboot工程jar包3、springboot配置文件4、多环境配置5、maven和boot多环境兼容问题6、配置文件分类7、springboot整合mybatis Spingboot springboot用来简化spring的初始搭建以及开发过程。 比方说&#xff0c;创建一个springmvc程序…

AI时代下,如何看待“算法利维坦”?

ChatGPT的浪潮从2022年袭来后&#xff0c;至今热度不减&#xff0c;呈现出蓬勃发展的趋势。AI家居、医疗、教育、金融、公益、农业、艺术…AI真的已经走进了生活的方方面面&#xff0c;我们仿佛已经进入了AI时代&#xff0c;势不可挡。人工智能水平如此之高&#xff0c;不禁感慨…

医疗器械行业为什么要搭建自己的知识付费平台

随着医疗技术的不断进步&#xff0c;医疗器械行业正迅速发展&#xff0c;成为全球范围内的热门产业。医疗器械行业需要不断更新技术、提升产品质量、加强用户培训和推广新产品。在这个过程中&#xff0c;搭建自己的知识付费平台变得越来越重要&#xff0c;本文将深入探讨为什么…

DAY1C++

1、思维导图 2.定义自己的命名空间myspace&#xff0c;并在myspace中定义一个字符串&#xff0c;实现求字符串大小的函数。 #include <iostream>using namespace std;namespace myspace{string s1("call your name");int len_s(string s){return s1.length();…

关于Word中隐藏文本的知识,看这篇就够了

Word允许你隐藏文本&#xff0c;这样你就可以阅读或打印文档&#xff0c;就好像文本不在那里一样。这似乎毫无意义&#xff0c;因为如果你不想让别人阅读&#xff0c;为什么不删除文本呢&#xff1f;但隐藏文本确实有一些有趣的用途。让我们来看看什么是隐藏文本&#xff08;什…

Python(六)—— 自定义模块

15. 自定义模块 15.1 模块的定义与分类 15.1.1 模块的定义 一个函数封装一个功能&#xff0c;当遇到众多函数时&#xff0c;将这些相同的功能封装到一个文件中&#xff0c;那么这个存储着很多常用的功能的py文件&#xff0c;就是模块。模块就是文件&#xff0c;存放一堆常用…