Rust程序结构与代码注释

【图书介绍】《Rust编程与项目实战》-CSDN博客

《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com)

Rust编程与项目实战_夏天又到了的博客-CSDN博客

3.1 Rust程序结构

我们从一个最简单的程序入手,来观察一个Rust的程序结构。
【例3.1】 第一个Rust例子

在命令行下用命令cargo new myrust新建一个Rust项目。

打开VS Code,打开文件夹myrust,并在VS Code中打开src下的main.rs,然后输入如下 代码:

复制代码
// my first program in Rust
fn main()
{
    println("Hello, world!");
}

学过C语言的朋友,应该一目了然,这个程序就是打印输出一行字符串"Hello, world!"。

按快捷键Ctrl+F5运行工程,在TERMINAL视图上可以看到运行结果:

复制代码
Hello World!

以上代码是多数初学者学会写的第一个程序,它的运行结果是在屏幕上打出"Hello World!"这句话。虽然它可能是Rust可写出的最简单的程序之一,但其中已经包含每一个Rust程序的基本组成结构。下面我们就逐个分析其组成结构的每一部分:

复制代码
// my first program in Rust

这是注释行。所有以两个斜线符号(//)开始的程序行都被认为是注释行,这些注释行是程序员写在程序源代码内,用来对程序进行简单解释或描述,对程序本身的运行不会产生影响。在本例中,这行注释对本程序是什么做了一个简要的描述。

复制代码
fn main()

这一行为主函数(Main Function)的起始声明。fn是一个关键字,它用来声明新函数。关键字(Keyword)又称保留字,是整个语言范围内预先保留的标识符,用户不能用关键字作为变量名或函数名。

main函数是所有Rust程序运行的起始点。无论它是在源代码文件的开头、结尾还是中间,此函数中的代码总是在程序开始运行时第一个被执行。并且,由于同样的原因,所有Rust程序都必须有一个main函数。

main后面跟了一对圆括号,表示它是一个函数,main是函数名。Rust中所有函数都跟有一对圆括号,圆括号中可以有一些输入参数。main函数后面的花括号之间的内容称为函数体,里面的代码就是函数功能的具体实现,花括号必不可少。

复制代码
println!("Hello, world!");

这一行用于向控制台打印输出一段字符串。println是一个宏,用于向控制台窗口输出内容,注意println后面紧跟了一个感叹号(!),这也是让人不爽的地方。我们后面还会详述宏println。注意这行代码以分号(;)结尾。分号标示了一个语句的结束,Rust的每一个代码语句都必须以分号结尾。Rust 程序员最常犯的错误之一就是忘记在语句末尾写上分号。

你可能注意到并不是程序中的所有行都会被执行。程序中可以有注释行(以//开头),然后有函数的声明(本例中为main函数),最后是程序语句(例如调用println!),最后这些语句行全部被括在主函数的花括号"{}"内。

本例中程序被写在不同的行中以方便阅读。其实这并不是必需的。本例也可以被写成一行 代码:

复制代码
fn main() {println!("Hello, world!");}   // my first program in Rust

可以看到,函数名、函数体(花括号中的内容)、注释都写在一行中了,而且最终程序运行结果依旧不变。但我们通常习惯分行写代码,分行写代码更方便让人阅读。

在Rust中,语句之间的分隔是以分号(;)为分隔符的。以下程序包含更多语句:

复制代码
// my first program in Rust
fn main()
{
    println!("Hello, world!");
    println!("Down with 996!");
}

这段代码将在VS Code终端窗口中输出两行字符串:

复制代码
Hello, world!

Down with 996!

输出"Hello, world!"和"Down with 996!"。在这个例子中,我们在两个不同的语句中调用了println!两次。再一次说明分行写程序代码只是为了方便阅读,因为这个main函数写成以下形式也没有任何问题:

复制代码
fn main() {println!("Hello, world!");    println!("Down with 996!");}

为方便起见,也可以把代码分为更多的行来写:

复制代码
// my first program in Rust
fn main()

{
    println!(

        "Hello, world!"

    );
    println!(
        "Down with 996!");
}

运行结果依旧是两行字符串。

3.2 注 释

注释(Comments)是源代码的一部分,但会被编译器忽略。注释不会生成任何执行代码。使用注释的目的只是使程序员可以在源程序中插入一些说明解释性的内容。

在程序中,Rust 支持两种插入注释的方法:

复制代码
// line comment
/* block comment */

第一种方法为行注释,告诉编译器忽略从//开始至本行结束的任何内容。第二种为块注释,告诉编译器忽略在/*符号和*/符号之间的所有内容,可能包含多行内容。

在以下程序中,我们插入了更多注释内容。

复制代码
/* my second program in Rust
with more comments */

fn main()
{
    println!("Hello world!");
    println!("Down with 996!");
}

如果你在源程序中插入了注释而没有用//符号或/*和*/符号,编译器会把它们当成Rust的语句,那么在编译时就会出现一个或多个错误信息。

相关推荐
OYYHXPJR1 分钟前
【算法】区间重叠模板和矩形重叠模板
算法
shehuiyuelaiyuehao3 分钟前
算法46,分治快排,排序数组
java·算法·排序算法·排序
野生技术架构师12 分钟前
1200 道 JAVA 面试题(各大企业常见面试题及答案)
java·开发语言
远航计算机20 分钟前
GEO 选题从哪来?用一份 Query 词库把一年内容排出来
大数据·人工智能·算法·aigc
宣宣猪的小花园.20 分钟前
【机器学习】神经网络与表征:为什么深度学习能自动提取特征
人工智能·嵌入式硬件·算法·机器学习
“AI国潮设计-小江”22 分钟前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁美食猫IP & 创意甜品设计(附ComfyUI工作流思路)
开发语言·人工智能·python·prompt·aigc
mmmmath_335 分钟前
LeetCode.018.四数之和
数据结构·算法·leetcode
AIGCmagic社区36 分钟前
腾讯混元 AuK 技术报告拆读:1.5B 统一语音生成与编辑,蒸馏后 4 步无 CFG 提速 4.5 倍
人工智能·算法·aigc·ai多模态
大熊背37 分钟前
基于照明色度表征的颜色恒常性的白平衡算法实现
算法·白平衡·色温·色度坐标·普朗克曲线
Yyyyyy~39 分钟前
【java】类和对象
java·开发语言