Rust学习笔记-01

0. Rust的源文件

像c语言的源文件我们以".c"为后缀,c++以".cpp"为后缀,java以".java"为后缀。Rust的源文件也不例外,它们总是以".rs"为后缀名。和Java的多个单词用驼峰命名规则不同,Rust语言多个单词我们通常用下划线进行连接(hello_world.rs)。

1. Hello world!

我们学习任何语言,都是从Hello world开始的。当然我们学习Rust也不例外。

首先执行以下命令:

$ cd ~
$ mkdir hello_world
$ cd hello_world

我们在用户跟目录下创建了 hello_world 文件夹,紧接着我们进入到我们创建的文件夹目录中,接下来我们来创建一个 main.rs 源文件,内容为:

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

保存文件,只需要输入如下命令:

$ rustc main.rs
$ ./main
Hello world!

我们就可以在命令行窗口内看到我们输出的 Hello world!字符串了。

2.来看看我们具体都做了哪些事情

fn main() {
    
}

这几行代码定义了一个Rust函数。和其他语言一样,Rust也是以main函数为程序的入口。
在main函数中:

println!("Hello world!");

这里和我在学习c语言和Java编程语言时不太一样,在c语言中,我们的hello world程序首先要引入相关的头文件。

#include <stdio.h>

之后,我们在程序中调用:

printf("Hello world!\n");

但是在我们刚才编写的Rust代码中,细心的同学可以发现,在 "println"之后有一个 "!"。这其实是一个Rust宏,现在我们只需要记住,在Rust代码中我们见到"!"的时候,就代表调用了一个宏而不是一个普通函数。
和Java、c语言一样,Rust代码以 ";"作为语句结束。

3. 编译和运行

在运行一个Rust程序之前,我们必须编译它。可以输入 rustc 命令来使用Rust编译器

$ rustc main.rs

在执行完这一步后,我们用 ls 命令可以发现:

$ ls
main  main.rs

其中main文件就是我们编译后的可执行文件了。这个时候,我们使用命令:

$ ./main

就可以让我们的程序运行起来。

Rust 是一种 预编译语言(ahead-of-time compiled language),程序编译好后,把它给任何人,他们都不需要安装 Rust 就可运行。

4. Cargo

Cargo 是 Rust 的构建系统和包管理工具,它负责三个工作:

  • 构建代码
  • 下载依赖库
  • 编译代码

绝大部分 Rust 项目使用 Cargo,我们可以使用命令:

$ cargo --version

来检查Cargo的安装配置情况,如果你是使用Rust官方安装包的话,Rust自带了Cargo。

使用Cargo构建一个项目通常需要做三件事:

  1. 将源文件放到正确的目录
  2. 删除旧的可执行文件
  3. 创建一个Cargo配置文件

回到我们的 hello_world 目录

$ mkdir src
$ mv main.rs src/main.rs
$ rm main

在 hello_world 目录下创建一个 Cargo.toml 文件(大小写敏感,否则Cargo识别不到)。这个文件使用TOML(Tom's Obvious, Minimal Language)格式。 TOML 类似于 INI,不过有一些额外的改进之处,并且被用作 Cargo 的配置文件。配置内容如下:

[package]
name = "hello world"
version = "0.0.1"
authors = ["your name"]

第一行的[package]表明下面的语句用来配置一个包。随着我们在这个文件增加更多的信息,我们会增加其他部分,不过现在,我们只有包配置。

另外三行设置了 Cargo 编译你的程序所需要知道的三个配置:包的名字,版本,和作者。

Ok,保存完成后,我们执行以下命令:

$ cargo build
Compiling hello_world v0.0.1 (file:///Users/zhaoliangtai/rust_projects/hello_world)
$ ./target/debug/hello_world
Hello world!

执行完成后我们可以看到,我们程序已经运行起来了。和Android开发者在使用gradle的时候类似,默认为我们生成了debug程序。当然我们也可以使用命令:

$ cargo run

来直接构建、编译、运行我们的程序。
Cargo 检查任何项目文件是否被修改,并且只会在你上次构建后修改了他们才重新构建。
我们也可以使用:

$ cargo build --release

来优化编译项目,这些优化可以让 Rust 代码运行的更快,不过启用他们会让程序花更长的时间编译。这也是为何这是两种不同的配置,一个为了开发,另一个构建提供给用户的最终程序(和gradle很像)。

5. Cargo.lock是什么?

细心的同学可能发现了,在我们配置完配置文件并执行Cargo命令后,在我们的项目根目录下多了一个 "Cargo.lock" 文件

[[package]]
name = "hello_world"
version = "0.0.1"

Cargo 用Cargo.lock文件跟踪你程序的依赖。这里是 Hello World 项目的Cargo.lock文件。这个项目并没有依赖,所以内容有一点稀少。

6. 创建新Cargo项目的简单方法

$ cargo new hello_world --bin

这个命令传递了--bin参数因为我们的目标是直接创建一个可执行程序,而不是一个库。可执行文件通常叫做二进制文件(因为它们位于/usr/bin,如果你使用 Unix 系统的话)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 7,937评论 1 19
  • 第一步要做的事情是 安装Rust编译环境(人人都有的windows) 咱工作机器是win7+mingw所以直接到下...
    _AKI_Peroro_阅读 1,955评论 0 1
  • “行走,是生命对世界的探寻,是人生对生命的一种追求。” 路漫漫,天空时常笼罩着不知是晨雾还是雾霾,铭子迈步...
    桥梁纽带阅读 461评论 0 1
  • Hello everydody ! 很高兴成为简书新成员,在简书,我们还是刚刚相识的朋友,希望日后我们可以多多加深...
    为你读诗阅读 132评论 0 0