Hello Rust

发布时间 2023-06-12 11:11:25作者: CloverYou

创建于2023-03-28 09:26

本笔记主要来自于 Rust 程序设计语言 中文版 [1.2],旨在记录个人学习过程中的重点和心得体会。在记录过程中,笔者会对文档中的某些内容进行摘抄或修改,并添加自己的注释或说明。如有不当之处,请指正。

Rust 文件通常是以 .rs 拓展名结尾,与其它语言不同,在 rust 中,使用的是下划线小驼峰的方式作为命名规范(需要注意的是,文件名不能出现特殊字符,例如空格),例如:hello_world

首先我需要创建一个文件夹由于存放我的 rust 代码,我就将它创建在用户下的 dev 目录吧,这是我用来存放与开发相关的代码:

mkdir ~/dev/rust/learn
cd ~/dev/rust/learn

目录创建好之后再来一个 hello_world.rs 文件,如何编辑它那就看我们的喜好了,我选择VsCode,你们也可以使用命令行,例如:'vim'

touch ./01print_hello_world.rs

rust 程序的入口文件通常都需要一个 main 函数,在 rust 程序执行的时候都会优先执行它,这和 Java 类似。

fn main() {
  println!("hello world!")
}

在我们代码写完之后可以使用 rust 提供的命令来编译它,编译完成后它会生成一个可执行文件,我们执行它的编译产物即可

# clover @ MacBook-Pro in ~/dev/rust/learn [9:34:11] 
$ rustc 01print_hello_world.rs

# clover @ MacBook-Pro in ~/dev/rust/learn [9:35:04] C:127
$ ./01print_hello_world
hello world!

程序剖析

在我上面的程序中,定了一个 main 函数它也被称为主函数,任何一个 rust 程序在运行的时候首先会执行它!我定义的这个 main 函数它没有返回值,也没有参数列表,如果存在参数,那么它需要被放在 () 里面。
另外需要注意一点是,无论是我定义的 main 函数,还是其它函数,函数的主体都需要被放在 {} 里面,这和其他大部分语言是一样的,例如 Java。通常我们把左花括号 { 和参数列表放在同一行,它们之间用一个空格隔开:

fn xxx() { }

rust 很贴心的提供了一个工具 rustfmt,可以格式化我们的代码风格,他不需要而外安装因为它被集成在 rust 发行版中

# clover @ MacBook-Pro in ~/dev/rust/learn [10:11:33] 
$ rustfmt 01print_hello_world.rs

注意点

  1. Rust 风格的缩进是使用4个空格而不是制表符(tab),这在其它语言基本是一致的,因为制表符可能导致一些工具出现问题。
  2. 为什么使用 println!() 而不是 println() ,因为在 Rust 中,! 意味着调用的是一个宏而不是一个普通函数,println() 不包含 ! 所以调用的是一个普通函数。宏的内容还需要我更深入的学习才能分享
  3. hello world! 是作为一个字符串参数传递给 println! ,接着 println! 会将其打印在终端。(好想吐槽,不能用单引号表示一个串字符,双引好难看)
  4. Rust 和 Java 一样,都是需要通过英文分号 ; 来表示一行代码的结束,大多数代码结束都是以 ; 结尾