【Rust学习一】安装、编写hello world、使用carg

2019-07-30  本文已影响0人  淸_兲鮭鮭

参考书目:https://rustlang-cn.org/office/rust/book/getting-started/ch01-00-getting-started.html

开始学习rust,记录一下自己的学习内容,全程只记录Mac环境下的操作。
本文主要记录:

一、安装

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

这个命令等的时间可能会比较久,耐心一点。
接着出现下面的三个选项,选择1,默认安装就好了。

You can uninstall at any time with rustup self uninstall and these changes will
be reverted.

Current installation options:

   default host triple: x86_64-apple-darwin
     default toolchain: stable
  modify PATH variable: yes

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

此命令下载一个脚本并开始安装 rustup 工具,这会安装最新稳定版 Rust。
如果安装成功,将会出现如下内容:

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.

To configure your current shell run source $HOME/.cargo/env

按照上述提示,还要将Rust 加入系统 PATH 环境变量中,在下一次登录时生效
两种方式,任选其一即可:

  1. 不重启终端,在 shell 中直接运行如下命令,手动将 Rust 加入系统 PATH 变量中
    上述提示中是给的这种方式,比较便捷。
$ source $HOME/.cargo/env

2.可以在 ~/.bash_profile 文件中增加如下行:

$ export PATH="$HOME/.cargo/bin:$PATH"

《另外,你需要一个某种类型的链接器(linker)。很有可能已经安装,不过当你尝试编译 Rust 程序时,却有错误指出无法执行链接器,这意味着你的系统上没有安装链接器,你需要自行安装一个。C 编译器通常带有正确的链接器。请查看你使用平台的文档,了解如何安装 C 编译器。并且,一些常用的 Rust 包依赖 C 代码,也需要安装 C 编译器。因此现在安装一个是值得的。》---这里不太懂。

$ rustup update

为了卸载 Rust 和 rustup,在 shell 中运行如下卸载脚本(这个命令现在可以不用执行,不然又要重新安装一遍了。。。):

$ rustup self uninstall
$ rustc --version

你应能看到已发布的最新稳定版的版本号、提交哈希和提交日期,显示为如下格式:

rustc x.y.z (abcabcabc yyyy-mm-dd)

如果出现这些内容,Rust 就安装成功了!
没有成功的,注意检查一下配置环境变量那一步有没有正确执行。
如果有问题,可以求助:最简单的是 irc.mozilla.org 上的 #rust IRC 频道 ,可以使用 Mibbit 来访问它。然后就能和其他 Rustacean(Rust 用户的称号,有自嘲意味)聊天并寻求帮助。其它给力的资源包括用户论坛Stack Overflow

二、编写一个打印 Hello, world! 的程序

安装好了 Rust,我们来编写第一个 Rust 程序。掌握用rust语言在屏幕上打印 Hello, world!

注意:本书假设你熟悉基本的命令行操作。Rust 对于你的编辑器、工具,以及代码位于何处并没有特定的要求,如果你更倾向于使用集成开发环境(IDE),而不是命令行,请尽管使用你喜欢的 IDE。目前很多 IDE 已经不同程度的支持 Rust;查看 IDE 文档了解更多细节。最近,Rust 团队已经致力于提供强大的 IDE 支持,而且进展飞速!

首先创建一个存放 Rust 代码的目录。建议在home目录下创建 projects 目录。
打开终端并输入如下命令创建 projects 目录,并在 projects 目录中为 Hello, world! 项目创建一个目录。

$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world

1. 新建源文件:main.rs

$ touch main.rs

Rust 源文件总是以 .rs 扩展名结尾。

注意:如果文件名包含多个单词,使用下划线分隔它们。例如命名为 hello_world.rs,而不是 helloworld.rs

2. 打开main.rs 文件,输入示例 1-1 中的代码。

1)打开文件:

$ vi main.rs

2)输入示例1-1中的代码
示例 1-1: 一个打印 Hello, world! 的程序

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

3)保存文件,并回到终端窗口。

3. 编译并运行文件
在终端窗口的~/projects目录下输入下列命令,编译和运行文件

$ rustc main.rs
$ ./main

运行成功,会输出:

Hello, world!

如果没有看到这些输出,回到 “故障排除” 部分查找寻求帮助的方法。
如果 Hello, world! 出现了,恭喜你!你已经正式编写了一个 Rust 程序。现在你成为一名 Rust 程序员,欢迎!

  1. Rust 的缩进风格使用 4 个空格,而不是 1 个制表符(tab)。

  2. println! 调用了一个 Rust 宏(macro)。如果是调用函数,则应输入 println(没有!)。当看到符号 ! 的时候,就意味着调用的是宏而不是普通函数。

  3. 编译和运行是彼此独立的步骤
    在运行 Rust 程序之前,必须先使用 Rust 编辑器编译它,即输入 rustc 命令并传入源文件名称,如$ rustc main.rs。编译成功后,Rust 会输出一个二进制的可执行文件。

三、使用 Rust 的包管理器和构建系统 cargo

Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。(我们把代码所需要的库叫做 依赖(dependencies))。

最简单的 Rust 程序,比如我们刚刚编写的,没有任何依赖。所以如果使用 Cargo 来构建 Hello, world! 项目,将只会用到 Cargo 构建代码的那部分功能。在编写更复杂的Rust程序时,你将添加依赖项,如果使用Cargo启动项目,则添加依赖项将更容易。

$ cargo --version

如果你看到了版本号,说明已安装!如果看到类似 command not found 的错误,你应该查看相应安装文档以确定如何单独安装 Cargo。

  1. 进入projects 目录(或者你存放代码的目录)。
$ cd ~/properties
  1. 使用cargo创建项目hello_cargo
    新建了名为 hello_cargo 的目录,同时 Cargo 在一个hello_cargo 目录中创建了项目文件。
$ cargo new hello_cargo
  1. 进入项目目录查看文件
$ cd hello_cargo
$ ll

进入 hello_cargo 目录并列出文件,看到Cargo生成的项目目录结构如下:

.
├── Cargo.toml
└── .git/
└── .gitignore
└── src
    └── main.rs

一个 Cargo.toml 文件,一个 src 目录,以及位于 src 目录中的 main.rs 文件。它也在 hello_cargo 目录初始化了一个 git 仓库,以及一个 .gitignore 文件。

现在打开 src/main.rs ,可以看到Cargo 为你生成了一个 Hello World! 程序,正如我们之前编写的示例 1-1!目前为止,之前项目与 Cargo 生成项目的区别是 Cargo 将代码放在 src 目录,同时项目根目录包含一个 Cargo.toml 配置文件。

1)构建
在 hello_cargo 目录下,输入下面的命令来构建项目:

$ cargo build

编译完成后会创建一个可执行文件 target/debug/hello_cargo,注意文件位置。
2)运行可执行文件:

$ ./target/debug/hello_cargo
$ cargo run
$ cargo check

所以编写代码时定期运行 cargo check 确保它们可以编译。当准备好使用可执行文件时才运行 cargo build。

$ cargo build --release
上一篇下一篇

猜你喜欢

热点阅读