我们的第一个Rust程序

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: Rust语言学习者,通常都会有其它语言的背景,很少有人从零入门Rust。Rust语言应该有一门适合初学者的教程,来帮助大家使用Rust作为入门语言,我非常希望有人能使用原汁原味Rust的思维在计算机世界攻城略地。

Rust语言学习者,通常都会有其它语言的背景,很少有人从零入门Rust。

Rust语言应该有一门适合初学者的教程,来帮助大家使用Rust作为入门语言,我非常希望有人能使用原汁原味Rust的思维在计算机世界攻城略地。这并不说学完这门语言就可以懈怠了,如果没有《操作系统》和《组成原理》等知识的加持根本无法自如运用Rust。例如,标准库中的线程API就是对系统调用的直接封装,因此学习这些知识有利于提高Rust技术水平。假如你在操作系统之上做应用开发,必定需要对操作系统实现与系统调用有所了解。

我们这门课程假设学习者没有编程知识。那么我们需要介绍一些极为基础的内容,如果你已经非常熟悉,可以快速略过。

我们继续使用上节课创建的oskwgbin来讲解。

程序的基本结构

这一节,我们详细讲解main.rs文件中写的代码:

fn main() {
   
   
    println!("Hello World!");
}

这段代码功能是将Hello World打印出来。

这是一个固定的模式,我们创建一个源文件,在文件中编写如下代码:

fn main() {
   
   

}

这个框架内部就是我们编写代码的地方,后续介绍到函数,我们会详细介绍它,这里你先记住即可。

标识符

函数名以及后续将学到的变量名、结构体等各种自定义的名字都叫标识符,遵循标识符的命名规则。

  • 首字母:必须是字母(a-z、A-Z)、下划线(_)或美元符号($)。- 不能是数字。
  • 后续字符:可以是字母、数字、下划线、美元符号、撇号(')或非空格的 Unicode 字符。不能包含空格或控制字符。
  • Rust 标识符是大小写敏感的。
  • 不能使用 Rust 关键字作为标识符。
    举例:
    合法的标识符:_variable、my_function、camelCase、UPPER_CASE、snake_case
    不合法的标识符:1variable、$function、#hashtag、空格 、'string'

关键字

Rust 关键字是用于定义语法规则和限制名称空间中的标识符的特殊标识符。包含已经使用的关键字和保留关键字。例如这里的fn就是要定义一个函数。所有关键字: https://doc.rust-lang.org/std/index.html#keywords

接下来看函数内部,Rust与其他语言不同,它的输出语句用的println!是一个宏,作用是将括号中的内容打印出来,双引号中的内容叫字符串,字符串我们后面课程再介绍。最后有一个;,表示这一句代码结束。就像我们写文章,每句话结束都加句号一样。

println!("Hello World!");

比如下面的代码,我们就可以实现先打印Hello World!,再打印跟程序饲养员学🦀编程到控制台。

fn main() {
   
   
    println!("Hello World!");
    println!("跟程序饲养员学🦀编程");
}

运行效果如下:

image.png

如果代码缺失分号,那么编译器会认为第一句代码没有结束,也就出现了语法错误,编译器会尽可能的提示出错的地方。

image.png

image.png

RustRover会给出快速修复的办法。

程序员最讨厌的有两件事,自己写代码要写注释看别人代码时没注释。可见注释是让我们程序员又爱又恨的存在。

注释和文档

注释会被编译器忽略,所以说注释仅用于帮助其它开发者理解代码的功能和逻辑,要言简意赅的描述清楚代码的功能,复杂的算法上还需要举例说明,如果注释在方法上则需要说明入参和返回的作用等等。

Rust中有下面三类注释:

  1. 单行注释
  2. 多行注释
  3. 文档注释

单行注释//

// 程序入口函数
fn main() {
   
   
    // 打印HelloWorld
    println!("Hello, world!");
}

多行注释 /* */

/*
我
是
程
序
饲
养
员
程序入口函数
无参数
无返回值
 */
fn main() {
   
   
    println!("Hello, world!");
}

文档注释

文档注释有两种形式,使用三斜线///和使用/** 注释内容 */包裹。在执行cargo doc指定时,会解析成web文档的格式,方便调用者阅读。现在见到这种能够认即可,后续课程会介绍文档的编写格式,以及阅读文档等方面的内容。

总结

本节课介绍了程序的基本结构,以及标识符和关键字,并且在IDE中运行了我们编写的程序。同时介绍了两种注释,一种是单行注释,另一种是多行注释。注释会被编译器忽略,同时避免使用过多的注释,以免影响代码的可读性。

相关文章
|
3月前
|
Rust JavaScript 前端开发
将 Rust 程序编译为 WebAssembly
将 Rust 程序编译为 WebAssembly
119 0
|
4月前
|
Rust
使用cargo创建rust程序并运行
使用cargo创建rust程序并运行
35 0
|
10月前
|
Rust JavaScript 前端开发
将 Rust 程序编译为 WebAssembly 的知识与实践
本文记叙如何将一个 Rust 语言编译成可执行的 WebAssembly 文件。
170 0
|
Rust 前端开发 安全
通过跨端程序tauri,来简单入门一下rust
Tauri 是一个跨平台 GUI 框架,与 Electron 的思想基本类似。Tauri 的前端实现也是基于 Web 系列语言,Tauri 的后端使用 Rust。Tauri 可以创建体积更小、运行更快、更加安全的跨平台桌面应用。
1167 0
|
Rust 供应链 安全
QCon 2022·上海站 | 学习笔记2: Rust 程序可靠性保证相关技术探索与实践
QCon 2022·上海站 | 学习笔记2: Rust 程序可靠性保证相关技术探索与实践
189 0
|
Rust 安全 Java
程序人生 - TIOBE 5 月编程语言榜单:Python 超越 Java 重回第二,Rust 崛起
程序人生 - TIOBE 5 月编程语言榜单:Python 超越 Java 重回第二,Rust 崛起
156 0
程序人生 - TIOBE 5 月编程语言榜单:Python 超越 Java 重回第二,Rust 崛起
|
缓存 移动开发 Rust
Zellij-一个典型的 Rust程序的性能优化案例
Zellij是一款非常优秀的终端工作区和多路复用器(类似于tmux和screen),由于使用Rust语言开发,因此与Zellij与WebAssembly原生兼容。作为一款功能强大,同时又容易上手的终端复用工具,将会话(session)和窗口解耦,使得用户可以在单个窗口内运行多个虚拟终端,真正做到保持界面清爽还提高了工作效率。
Zellij-一个典型的 Rust程序的性能优化案例
|
Ubuntu Linux C语言
在 Ubuntu 上为 CentOS 编译 Rust 程序
为什么在 Ubuntu 上编译个 Rust 的 helloworld 程序,放到 CentOS 上都跑不起来
1739 0
|
7天前
|
Rust 安全 程序员