c程序设计语言 hello,Hello, World!

ch01-02-hello-world.md

commit f63a103270ec8416899675a9cdb1c5cf6d77a498

既然安装好了 Rust,我们来编写第一个 Rust 程序。当学习一门新语言的时候,使用该语言在屏幕上打印 Hello, world! 是一项传统,我们将沿用这一传统!

注意:本书假设你熟悉基本的命令行操作。Rust 对于你的编辑器、工具,以及代码位于何处并没有特定的要求,如果你更倾向于使用集成开发环境(IDE),而不是命令行,请尽管使用你喜欢的 IDE。目前很多 IDE 已经不同程度的支持 Rust;查看 IDE 文档了解更多细节。最近,Rust 团队已经致力于提供强大的 IDE 支持,而且进展飞速!

首先创建一个存放 Rust 代码的目录。Rust 并不关心代码的存放位置,不过对于本书的练习和项目来说,我们建议你在 home 目录中创建 projects 目录,并将你的所有项目存放在这里。

打开终端并输入如下命令创建 projects 目录,并在 projects 目录中为 “Hello, world!” 项目创建一个目录。

对于 Linux、macOS 和 Windows PowerShell,输入:

$ mkdir ~/projects

$ cd ~/projects

$ mkdir hello_world

$ cd hello_world

对于 Windows CMD,输入:

> mkdir "%USERPROFILE%\projects"

> cd /d "%USERPROFILE%\projects"

> mkdir hello_world

> cd hello_world

接下来,新建一个源文件,命名为 main.rs。Rust 源文件总是以 .rs 扩展名结尾。如果文件名包含多个单词,使用下划线分隔它们。例如命名为 hello_world.rs,而不是 helloworld.rs。

现在打开刚创建的 main.rs 文件,输入示例 1-1 中的代码。

文件名: main.rs

fn main() {

println!("Hello, world!");

}

示例 1-1: 一个打印 Hello, world! 的程序

保存文件,并回到终端窗口。在 Linux 或 macOS 上,输入如下命令,编译并运行文件:

$ rustc main.rs

$ ./main

Hello, world!

在 Windows 上,输入命令 .\main.exe,而不是 ./main:

> rustc main.rs

> .\main.exe

Hello, world!

不管使用何种操作系统,终端应该打印字符串 Hello, world!。如果没有看到这些输出,回到安装部分的 “故障排除” 小节查找有帮助的方法。

如果 Hello, world! 出现了,恭喜你!你已经正式编写了一个 Rust 程序。现在你成为一名 Rust 程序员,欢迎!

现在,让我们回过头来仔细看看 “Hello, world!” 程序中到底发生了什么。这是第一块拼图:

fn main() {

}

这几行定义了一个 Rust 函数。main 函数是一个特殊的函数:在可执行的 Rust 程序中,它总是最先运行的代码。第一行代码声明了一个叫做 main 的函数,它没有参数也没有返回值。如果有参数的话,它们的名称应该出现在小括号中,()。

还须注意,函数体被包裹在花括号中,{}。Rust 要求所有函数体都要用花括号包裹起来。一般来说,将左花括号与函数声明置于同一行并以空格分隔,是良好的代码风格。

在编写本书的时候,一个叫做 rustfmt 的自动格式化工具正在开发中。如果你希望在 Rust 项目中保持一种标准风格,rustfmt 会将代码格式化为特定的风格。Rust 团队计划最终将该工具包含在标准 Rust 发行版中,就像 rustc。所以根据你阅读本书的时间,它可能已经安装到你的电脑中了!检查在线文档以了解更多细节。

在 main() 函数中是如下代码:

#![allow(unused)]fn main() { println!("Hello, world!");

}

这行代码完成这个简单程序的所有工作:在屏幕上打印文本。这里有四个重要的细节需要注意。首先 Rust 的缩进风格使用 4 个空格,而不是 1 个制表符(tab)。

第二,println! 调用了一个 Rust 宏(macro)。如果是调用函数,则应输入 println(没有!)。我们将在第十九章详细讨论宏。现在你只需记住,当看到符号 ! 的时候,就意味着调用的是宏而不是普通函数。

第三,"Hello, world!" 是一个字符串。我们把这个字符串作为一个参数传递给 println!,字符串将被打印到屏幕上。

第四,该行以分号结尾(;),这代表一个表达式的结束和下一个表达式的开始。大部分 Rust 代码行以分号结尾。

你刚刚运行了一个新创建的程序,那么让我们检查此过程中的每一个步骤。

在运行 Rust 程序之前,必须先使用 Rust 编译器编译它,即输入 rustc 命令并传入源文件名称,如下:

$ rustc main.rs

如果你有 C 或 C++ 背景,就会发现这与 gcc 和 clang 类似。编译成功后,Rust 会输出一个二进制的可执行文件。

在 Linux、macOS 或 Windows 的 PowerShell 上,在 shell 中输入 ls 命令可以看见这个可执行文件。在 Linux 和 macOS,你会看到两个文件。在 Windows PowerShell 中,你会看到同使用 CMD 相同的三个文件。

$ ls

main main.rs

在 Windows 的 CMD 上,则输入如下内容:

> dir /B %= the /B option says to only show the file names =%

main.exe

main.pdb

main.rs

这展示了扩展名为 .rs 的源文件、可执行文件(在 Windows 下是 main.exe,其它平台是 main),以及当使用 CMD 时会有一个包含调试信息、扩展名为 .pdb 的文件。从这里开始运行 main 或 main.exe 文件,如下:

$ ./main # Windows 是 .\main.exe

如果 main.rs 是上文所述的 “Hello, world!” 程序,它将会在终端上打印 Hello, world!。

如果你更熟悉动态语言,如 Ruby、Python 或 JavaScript,则可能不习惯将编译和运行分为两个单独的步骤。Rust 是一种 预编译静态类型(ahead-of-time compiled)语言,这意味着你可以编译程序,并将可执行文件送给其他人,他们甚至不需要安装 Rust 就可以运行。如果你给他人一个 .rb、.py 或 .js 文件,他们需要先分别安装 Ruby,Python,JavaScript 实现(运行时环境,VM)。不过在这些语言中,只需要一句命令就可以编译和运行程序。这一切都是语言设计上的权衡取舍。

仅仅使用 rustc 编译简单程序是没问题的,不过随着项目的增长,你可能需要管理你项目的方方面面,并让代码易于分享。接下来,我们要介绍一个叫做 Cargo 的工具,它会帮助你编写真实世界中的 Rust 程序。

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

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

相关文章

python object单引号变成双引号_Python学习第163课--Linux命令行中的单引号和双引号...

【每天几分钟,从零入门python编程的世界!】我们都知道引号的作用就是为了引用,比如引用别人说的话,这句话就放在引号里面。而Linux命令行中的single quote(单引号)和dubble quote(双引号)有不同的作用。●双引号linux命令中双引号…

C语言条件循环语句执行步骤,C语言中for语句的执行过程是什么?

C语言中for语句的执行过程是:1、会先判断条件表达式是否成立,如果条件成立则执行中间循环体,执行完中间循环体后接着执行末尾循环体 ;2、在执行完末尾循环体后对条件表达式再次判断,若条件还成立,则继续重复…

python平方数迭代器_Python三大神器之迭代器详解

我们将要来学习python的重要概念迭代和迭代器,通过简单实用的例子如列表迭代器和xrange。可迭代一个对象,物理或者虚拟存储的序列。list,tuple,strins,dicttionary,set以及生成器对象都是可迭代的&#xff…

c语言规范标准中英文,C语言中英文翻译资料.doc

C语言中英文翻译资料.docThe C Programming LanguageC is a high-level programming language developed by Dennis Ritchie and Brian Kernighan at Bell Labs in the mid-1970s. Although originally designed as a systems programming language, C has proved to be a powe…

lvm 扩展根目录_Lvm扩展根目录容量

2、新加一块硬盘,我的是sdb先创建物理卷[rootredhat6-3~]#fdisk/dev/sdbCommand(mforhelp):nCommandactioneextendedpprimarypartition(1-4)pPartitionnumber(1-4):1Firstcylinder(1-261,default1):(回车,默认将所有空间分配给第一个主分区)Usingdefault…

c语言趣味程序设计编程100例精解,c趣味编程100例

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #include #include #include #include #include using namespace std;void z1();void z2();void z3();void z4();void z5();void z6();void z7();void z8();int c3(int, int);int draw(int(*)(double),…

SQL语言深入

数据库系统 数据库系统主要有以下 3 个组成部分: 1 . 数据库:用于存储数据的地方。 2 . 数据库管理系统:用于管理数据库的软件。 3 . 数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库库的软件补充。 数据库管…

tb项目管理实践_项目经理与项目管理整理

项目经理职责:要想项目的分配尽可能地准确,任务分配者必须了解项目研发相关的技术。进行产品开发过程中的业务目标、进度、成本、质量控制。挑选项目团队并进行团队建设,激发、鼓舞和改进团队的生产效率。识别项目干系人,定期向干…

加法的横式竖式教案c语言,20以内竖式加减法教案

【www.ahanw.cn--活动致辞】活动意图:数学的加减法运算很重要。特别是20以内的加减法是各种数字运算的基础。学好20以内的加减法,有利于活化孩子的头脑,发展孩子的思维。活动目标:1、感知进位加、退位减的算法,整理和归…

github随时同步代码_GitHub代码下载和同步

1.下载git客户端https://git-scm.com/ssh-keygen -C "youremail.address" -t rsa2. 把下面文件的内容复制到 https://github.com/settings/keysWindows:C:\Users\GengZhaoyun\.ssh\id_rsa.pubLinux:.ssh\id_rsa.pub测试是否配制正确ssh -T gitgithub.com显示Hi gengz…

c语言10个数求立方合并输出,C语言 求出100~999之间的所有“水仙花数”并输出...

“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯…

lstm 变长序列_keras在构建LSTM模型时对变长序列的处理操作

我就废话不多说了,大家还是直接看代码吧~补充知识:RNN(LSTM)数据形式及Padding操作处理变长时序序列dynamic_rnnSummaryRNN样本一样,计算的状态值和输出结构一致,也即是说只要当前时刻的输入值也前一状态值一样,那么其…

c语言平面向量加法考点,平面向量的加减法怎么死活都不会?有没有什么口诀?例如:向量AB+BC=?向量OA-OB=?向量AB-CB=?有没有什么口诀!...

设a(x,y),b(x,y).1、向量的加法向量的加法满足平行四边形法则和三角形法则.ABBCAC.ab(xx,yy).a00aa.向量加法的运算律:交换律:abba;结合律:(ab)ca(bc).2、向量的减法如果a、b是互为相反的向量,那么a-b,b-a,ab0.0的反向量为0AB-ACC…

乘基取整法是什么_数字逻辑电路-学习指南

数字逻辑电路-学习指南一、判断题(判断结果为真(T)或为假(F)1.()逻辑函数的真值表是惟一的,但表达式不一定是惟一的。2.()在基数乘除法中,整数部分的转换采用“除基取余”法,小数部分的转换采用“乘基取整”法。3&…

C语言定义直线的数据类型,C语言 | 数据类型

原标题:C语言 | 数据类型1.变量与常量数据在程序的世界中,可以让计算机按照指令做很多事情,如进行数值计算、图像显示、语音对话、视频播放、天文计算、发送邮件、游戏绘图以及任何我们可以想象到的事情。要完成这些任务,程序需要…

pyqt5生成py的文件为什么是c 语言,如何使用PyQt5在python中创建文件对话框

我有一个名为PDFviewer的python类,在运行该程序时,系统将显示一个窗口,该窗口处理button(打开文件夹),它将打开一个文件对话框,允许用户选择一个目录并显示其中的文件。在问题是,当我尝试单击按钮时&#x…

nosql简答什么是最终一致性_可靠消息最终一致性方案中预发送作用是什么

可靠消息最终一致性方案的核心流程①上游服务投递消息如果要实现可靠消息最终一致性方案,一般你可以自己写一个可靠消息服务,实现一些业务逻辑。首先,上游服务需要发送一条消息给可靠消息服务。这条消息说白了,你可以认为是对下游…

android汽车音频焦点方案,管理音频焦点  |  Android 开发者  |  Android Developers

两个或两个以上的 Android 应用可同时向同一输出流播放音频。系统会将所有音频流混合在一起。虽然这是一项出色的技术,但却会给用户带来很大的困扰。为了避免所有音乐应用同时播放,Android 引入了“音频焦点”的概念。一次只能有一个应用获得音频焦点。当…

neo4j browser执行脚本后不提示用时_还不懂什么是分层自动化测试的,有赞的实践经历告诉你...

来源:https://testerhome.com/articles/19109# 背景先理一下自动化测试的概念,从广义上来说,一切通过工具(程序)的方式来代替或者辅助手工测试的行为都可以成为自动化。从狭义上来说,通过编写脚本的方式,模拟手工测试…

android+自定义alertdialog,安卓自定义AlertDialog

AlertDialog.png使用方法 example:DialogUtil.showAlertDialog(getActivity(), R.mipmap.restart, "退出提示", "你确定要退出吗?"),"确定", "取消", true, new DialogUtil.AlertDialogBtnClickListener() {Overridepublic…