【一起学Rust】Rust的Hello Rust详细解析
跟随本篇文章,你将学会编写Rust的Hello World,并且对Rust编程有个初步的了解。
文章目录
- 前言
- 一、创建项目目录
- 二、编写Hello World
- 三、运行程序
- 编译
- 运行
- 四、分析Hello World
- 源码分析
- 编译过程
- 总结
- 作业
前言
在上一小结中,我们搭建了 Rust 的开发环境,并且使用 Rust 的包管理工具 Cargo 运行了官方提供的示例程序。
本节我们将使用 Rust 来实现一个 Hello World。当你学习任意一门编程语言时,学习的第一门课就是 Hello World,通过 Hello World 你可以了解这门编程语言基本上是什么样子的,怎么编程,对其一些语法特性能有个基本的了解。
一、创建项目目录
Rust 原本是提供了包管理工具 Cargo 的,它提供了项目创建的功能,可以创建一个完整的 Rust 项目,但是 Rust 实际上运行可以不依赖其他的项目文件。
Rust 就和 C 语言差不多,有可以将源码单独编译成一个文件的能力。就像你写了个 main.c
,里面写了 Hello World,然后执行 cl main.c
一样。这是预编译类型语言一个相当强大的能力,强如 Java 使用 javac
编译出来的也只是字节码文件,需要借助 JVM 才可以运行,而 Rust 编译的文件则可以不借助于运行时
运行。
因此,现在我们使用 Rust 来做这件事。首先就是新建一个文件夹
,这个文件夹在什么地方你可以自己定,只要你能找到它就行,你甚至可以创建在桌面。我就创捷到了一个地方,并且将这些项目名字规整的放在一起,方便查看。
二、编写Hello World
现在,找到你创建的文件夹,进入这个文件夹,然后创建个文件 main.rs
,就像下面图中一样,
然后在空白处 右击
,并选择 使用vscode打开
。
其实 Rust 是不限制你使用何种代码编辑器的,哪怕是记事本也可以编写 Rust 代码,我们这里为了方便,就选择了 vscode。
然后在 写代码区域
中写入以下代码,
fn main() {println!("hello rust!");
}
这样 Hello World 就编写完成了。
三、运行程序
运行这个 Rust 程序分为两个步骤,
- 编译
- 运行
编译: 就是将代码编译成二进制可执行程序。
在 vscode 的下方,有个终端选项卡,如下图
编译
现在我们开始编译刚才写的代码,在终端
中输入以下命令运行编译程序,
rustc main.rs
如果没有出现错误,你将出现和我一样的界面
在文件目录会多出两个文件,main.exe
和 main.pdb
。
main.exe
是编译好的可执行文件,你在文件管理器界面直接双击就可以运行main.pdb
是一个包含调试信息的文件
运行
现在我们来运行这个可执行文件,在终端中输入以下命令运行程序
.main.exe
在终端中就会输出 Hello World了。
现在我们在文件管理器中文件,首先进入你创建项目的文件夹,
双击 main.exe
,你就会发现什么也没有出现,就是电脑屏幕闪了一下。这是没有问题的,因为我们创建的是命令行程序,是没有窗口的,在程序输出完 Hello World 以后就运行结束了,所以什么都看不到。
在空白处 右击
,选择 打开终端
,然后输入以下命令运行,可以得到和之前一样的结果。
.main.exe
四、分析Hello World
接下来我们对这个编写并运行 Hello World 的流程进行分析。
源码分析
在这段简短的源码中,我们创建了一个 main
函数,并且输出了 Hello World, 以下内容是你要注意的,
- 入口函数是
main
,遵循大多数编程语言的传统
- 大括号标明作用域
- 创建
main
函数,()
中没有内容表示不接受参数
- 语句分号结尾
除此以外,还有一些东西,是我们后面才会学到的东西,你有兴趣可以了解一下,
println!
并不是一个函数调用,这是个宏调用,如果你见到!
表示这是个宏- Rust 缩进风格使用 4 个空格,而不是 1 个制表符
tab
编译过程
在 Rust 中,编译和运行是独立的步骤,你需要将源码编译成可执行文件
,然后再执行这个可执行文件
,
我们使用以下命令进行编译,
rustc main.rs
rustc
是 Rust提供的将源码编译成为可执行文件的程序,接收一个文件名
。main.rs
是源文件的文件名,这里被当作参数传递给 rustc- 两部分要使用空格 隔开,区分传递给程序的参数
总结
现在,你已经学会使用 Rust 来编写一个 Hello World,并且对 Rust 编译和执行有所了解。
作业
考虑以下问题,重复自己在脑海中学过的东西,使对其印象更加深刻,从而让你对本章知识有更深的理解。
- 使用 Rust 输出你的名字
- 回顾 Rust 的编译和运行
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
【一起学Rust】Rust的Hello Rust详细解析相关推荐
- c 结构体 不允许使用不完整的类型_C语言必学知识点 quot;结构体quot;详细解析!...
结构体是经常用到的数据类型,使用频率不亚于指针,所以需要重视,不过用法非常简单. 一.什么是结构体 ☀ 在前面的时候已经介绍了C语言中的数组,用法跟其他语言差不多.当一个整体由多个数据构成时,我们可以 ...
- Rust语言开发环境搭建详细教程
目录 一.Rust简介 1.rust历史 2.rust吉祥物 二.Rust开发环境搭建 1.C++环境安装 2.Rust下载 3.rust安装 4.rust环境检测 查看rust版本 查看cargo版 ...
- belt rust take tours_「Rust每日新闻」本周精选 • 第二十二期
前言: 从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛.tg channel.Steemit.GitHub.语雀订阅都开通了Rust每日新闻,分享我每天的见闻,偶尔 ...
- Rust actix aiohttp_如何看待 Rust Actix 库的维护者退出开源界?
更新:actix-web已经找到了接手维护者. 新的维护者看上去是一个比较靠谱的开发者,看到他也参与bastion这个项目,该项目旨在用Rust实现一个类Erlang VM(BEAM)的东东.感觉ac ...
- 【Rust 日报】2021-12-23 Rust有什么是Zig所没有的?
[旧闻]一个由Atom开发者用Rust编写的代码编辑器 这个是上周三即12月15日发布的消息了,目前官方透露的信息很少,给了一个简陋的官网:https://zed.dev/ 同时官方在该帖下透露了一些 ...
- 选择 Go 还是 Rust?CloudWeGo-Volo 基于 Rust 语言的探索实践
本文整理自 CloudWeGo 开源一周年技术沙龙活动中字节跳动基础架构服务框架资深研发工程师吴迪的演讲分享,技术沙龙主题为<字节高性能开源微服务框架:CloudWeGo>. 本文将从以下 ...
- 研读Rust圣经解析——Rust learn-15(unsafe Rust )
研读Rust圣经解析--Rust learn-15(unsafe Rust ) 不安全的Rust unsafe关键字 解引用裸指针 声明一个不可变的裸指针 声明可变的裸指针 注意点 调用不安全函数或方 ...
- Rust学习教程02 - Rust语言简介
本文节选自<<Rust语言圣经>>一书 欢迎大家加入Rust编程学院,一起学习交流: QQ群:1009730433 进入Rust编程世界 一.Rust发展历程 Rust 最早是 ...
- 【Rust日报】2020-06-08 - Rust/WinRT快速入门
mlua v0.4 发布并支持Lua 5.4 mlua v0.4 released with Lua 5.4 support https://github.com/khvzak/mlua mlua v ...
最新文章
- JSP实现医院住院管理系统
- [YTU]_2718 (求最高同学位置)
- 计算机专业考研末流211和双非,211大学考985研究生难吗,如何看待本科985学生读研去211学校?...
- spring mvc全局异常处理,注解实现
- 三、Python第三课——Python中数字的用法及编码原则(Python禅意)
- 【软件测试】结构化分支和循环语句的白盒测试
- Windows2003屏蔽IP
- OMM机房监控系统引领机房监控新趋势
- Ceilometer的知识总结
- 内存泄漏的原因及解决办法_浅谈 JS 内存泄漏问题
- 如何在 macOS Monterey 正式发布之前备份您的 Automator 作品?
- 进程控制(PCB,进程ID,进程状态,fork函数,文件共享)
- 韦根协议c语言,基于STM8系列的韦根协议门禁源代码 1.STM8系列开发源代码; 2.已做门禁开发:韦根协议刷卡门禁控制源代码; - 下载 - 搜珍网...
- springboot如何访问html页面,Springboot访问html页面的教程详解
- 进阶学习9:ECMAScript——概述、ES2015 / ES6新特性详解
- ScrollMagic结合TweenMax的Demo
- java 中报错 ~[classes/:na]
- SSAO By Computer Shader(三)
- linux proc 文件系统下 entry 的解释(转)
- JAVA 相关 官方网站
热门文章
- linux裸设备文件系统,关于裸设备,文件系统,CIO/DIO
- 怎样用matlab进行仿真,怎么用matlab仿真啊
- python3中aiohttp+asyncio 高效率爬取图片例子,本地保存
- 计算机的基础配置,教你认知电脑基本配置
- 【Kotlin学习之旅】使用Kotlin实现常见的对称加密、非对称加密、消息摘要、数字签名的demo
- 使用Pandas进行数据分析
- 关于电脑注册表regedit自定义管理右键菜单选项实例(删除增加)
- autojs查找图片相似轮廓
- 【3C认证】儿童安全座椅3C认证本年9月1日起实施
- 动手学习深度学习-跟李沐学AI-自学笔记(1)