Rust 学习笔记 - 在浏览器上输出 Hello world!(一)

栏目: 编程语言 · Rust · 发布时间: 5年前

内容简介:欢迎回来!“Hello world”几乎是学习任何语言的第一个程序了,学习Rust页不例外。在开始之前,请你先确保在自己电脑上安装了Rust。如果你还没有安装的话,我们一起安装一遍,不过,我使用的是Linux操作系统,其他系统可能略有不同,这个你需要注意。Rust 使用 Rustup 安装,你也可以查看更详细的文档:首先,打开一个终端,输入:

欢迎回来!

“Hello world”几乎是学习任何语言的第一个程序了,学习Rust页不例外。在开始之前,请你先确保在自己电脑上安装了Rust。如果你还没有安装的话,我们一起安装一遍,不过,我使用的是 Linux 操作系统,其他系统可能略有不同,这个你需要注意。Rust 使用 Rustup 安装,你也可以查看更详细的文档: Rustup

首先,打开一个终端,输入:

$ curl https://sh.rustup.rs -sSf | sh

这行代码会帮助我们下载一个小脚本并运行它,由于网络的原因,你需要耐心等待,多尝试几次, 直到出现类似的字样:

……
Current installation options:

   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>

到这里,离成功就不远了。接着,跟据提示,输入“1”并按下回车,就会开始下载一些组件了,你会看到如下字样:

info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2018-08-02, rust version 1.28.0 (9634041f0 2018-07-30)
info: downloading component 'rustc'
 20.1 MiB /  68.6 MiB ( 29 %) 493.4 KiB/s ETA: 101 s

由于网络原因,你还需要等待一阵子,或者可以考虑其他办法。直到你看到如下输出:

Rust is installed now. Great!

To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH 
environment variable. Next time you log in this will be done automatically.
https://doc.rust-lang.org/cargo/index.html
To configure your current shell run source $HOME/.cargo/env

恭喜你,Rust 已经安装完成了,包括自带的 Cargo 包管理器。我们还需要将 $HOME/.cargo/bin 添加到环境变量“PATH”中,编辑 $HOME/.profile 文件,在最后面追加 export PATH="$HOME/.cargo/bin:$PATH" 就可以了,不过,如果是Ubuntu等系统,Rustup会自动给你添加环境变量。

添加完环境变量后,你需要重启一下系统,或者注销后重新登录。我们打开一个终端并输入:

$ rustc -V
rustc 1.28.0 (9634041f0 2018-07-30)

那说明没有什么问题。

我们进行第一个程序。用你喜欢的编辑器创建一个文件:

$ vim hello_world.rs

然后在文件中输入:

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

编译并运行:

$ rustc hello_world.rs
$ ./hello_world
hello world!

也可以使用Cargo:

$ cargo new hello_world --bin
Created binary (application) `hello_world` project
$ cd hello_world

注意后面的 --bin 参数,这将告诉Cargo创建一个可执行程序,而不是库。

我们可以看到,cargo 自动创建了 src 目录和 Cargo.toml 文件(类似于nodejs的package.js文件),实际上,cargo还初始化了Git仓库并创建了 .gitignore 文件。因此在这之前,你应该先安装并配置好Git。

我们打开 Cargo.toml 文件:

[package]
name = "hello_world"
version = "0.1.0"
authors = ["xxx <xxx@xxx.com>"]

[dependencies]

[package] 片段中,包含了项目的名称、版本和从Git配置中读取的作者和作者邮箱。 [dependencies] 片段中包含了项目的依赖。今后,我们还需要修改 Cargo.toml 文件。你还可以去查看 Cargo 的文档。

我们进入 src 目录中的 main.rs 文件:

cd src
vim main.rs

Cargo 已经帮我们写好了“hello world!”, 我们可以直接运行:

$ cargo run // 编译并运行
Compiling hello_world v0.1.0 (file:///home/xxx/hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 0.29s
     Running `/home/xxx/hello_world/target/debug/hello_world`
Hello, world!

或者也可以先编译,后运行:

$ cargo build // 编译
Compiling hello_world v0.1.0 (file:///home/xxx/hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 0.20s
$ ./target/debug/hello_world 运行
Hello, world!

我们会发现,项目目录下又多出了一个 Cargo.lock 文件和 target 目录, Cargo.lock 文件由Cargo维护,不需要手动修改, target 目录用于存放可执行文件和一些临时文件,也不需要我们手动去维护。部分临时文件是可以复用的,以提高下次编译时的编译速度。

我们执行 cargo runcargo build 时,默认生成的可执行文件存放在 target/debug 目录下,虽然编译速度更快,但运行较缓慢,还包含了一些调试信息,导致生成的可执行文件体积也稍大。我们可以添加 --release 参数来开启编译器优化,会在 target/release 目录下生成可执行文件,这时候编译速度较慢,但是程序的运行速度会更快。

还有一个常用命令是 cargo check ,只检查代码是否可以编译而不生成可执行文件,因而速度比 cargo build 还要快。这里要说明的是,Rust的编译器非常强大,大部分情况下,只要能够编译通过的程序,运行是没有什么问题的。

再来解释以下这段代码:

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

第一行, fn 是Rust中的一个关键字,用于定义一个函数, main 是Rust的入口函数。要注意,函数体必须包裹在 {} 中,不可省略。对换行和缩进也没有要求;

第二行, println! 调用了一个“宏”而不是函数,注意“!”,调用函数不需要“!”,当看到“!”的时候就意味着调用的是一个“宏”而不是普通的函数,在后面会介绍“宏”。"hello world!"是一个字符串,作为参数传递给 println!println! 负责将“hello world!”打印到屏幕上。

我们的目的达到了没有?然而并没有,我们需要在浏览器上输出“hello world!”,不仅仅是在终端上。不管你在此之前是否听说或了解过HTTP协议和TCP协议,目前主流浏览器通常是先跟HTTP Server建立TCP连接,再通过TCP向HTTP Server发送HTTP请求。HTTPS又在TCP和HTTP中间加了一层SSL协议,在发送HTTP请求之前,还需要进行SSL协议“握手”,我们暂且不谈HTTPS。

Rust标准库 中没有HTTP Server的实现,(Golang的同学请不要笑,Golang的标准库杂而不精,等后面你就知道Rust是多么好用了),没关系,接下来我们实现一个玩具级别的。

请看下一节!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Python

Head First Python

Paul Barry / O'Reilly Media / 2010-11-30 / USD 49.99

Are you keen to add Python to your programming skills? Learn quickly and have some fun at the same time with Head First Python. This book takes you beyond typical how-to manuals with engaging images, ......一起来看看 《Head First Python》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具