跳到主要内容

开始使用Rust

C编程语言真正通过了时间的考验。很少有环境不会蓬勃发展。这主要是由于其高执行性能,不幸的是,这是有代价的:C不支持现代编程语言中预期的许多功能。

Mozilla Research的是试图创造一个更好的捕鼠器。它的语言设计仍然专注于高性能和接近硬件。

但是,它的语法和编译器也利用了现代编程语言研究提供的各种好处。鉴于Mozilla的使命是创建一个“开放网络”,公司正在不知疲倦地将其最新的创意带到网络上并不奇怪。

虽然Rust理论上可以通过Emscripten等系统在客户端上运行,但其真正的优势在于创建高效的后端服务。

如何开始使用Rust

 The Rust installer provides a semi-graphic installation environment

Rust安装程序提供半图形安装环境

虽然像'apt-get'这样的包管理器确实让开发人员的生活变得更轻松,但总的来说,包列表维护者并不是超速的朋友。正因为如此,许多(如果不是大多数)发行版的包缓存都已经过时了。

Rust团队通过提供专用安装脚本解决了这个问题,该脚本设置了有效运行的系统。然后,部署过程分为两步:首先,确保CURL下载程序/解析器可用:

tamhan @ tamhan-thinkpad:〜$ sudo apt-get install curl [sudo]密码为tamhan:读取包列表...完成...

然后,在第二步中,下载安装程序并使用管道操作符将其传递给“sh”。 'Sh'是工作站的默认shell解释器的简写,然后将继续运行手头的代码:

tamhan @ tamhan-thinkpad:〜$ curl https://sh.rustup.rs -sSf | sh info:下载安装程序

在安装过程中,Rust安装程序将显示各种类似于右图所示的提示。只需按照它们即可实现默认安装。

在某些情况下,Rust部署将失败,并出现类似于“错误:无法写入rcfile文件:'/ home / tamhan / .bash_profile'”的错误。如果在安装过程中发生这种情况,请使用“sudo -s”获取根壳,然后冲洗并重复以继续。

运行一个样本

有了这个,现在是时候运行我们的第一个小程序了。默认情况下,Rust文件的文件扩展名为“.rs”。创建一个名为“firsttest.rs”的文件,然后为其提供以下代码:

fn main(){println!(“Hello World!”); }

C和C ++程序员经常想知道为什么'println'方法的调用需要使用感叹号。答案很简单:Rust将'println'实现为一个宏,它以不同的方式调用。

鉴于Rust是一种编译语言,我们的示例必须先处理才能从命令行运行:

tamhan @ tamhan-thinkpad:〜/ rustspace $ rustc firsttest.rs tamhan @ tamhan-thinkpad:〜/ rustspace $ ./firsttest Hello World!

先进的衰变

在我们可用的有限空间中描述完整的编程语言,例如Rust,是不可能的。让我们首先正式指向Mozilla Research的综合文件。确保给C程序员留下深刻印象的一个特性涉及使用'match'命令:除了直接比较外,它还允许使用范围运算符来大大简化高级程序的设计:

fn main(){let number = 5; println!(“Working on {}”,number);匹配号码{1 => println!(“一个!”),2 | 3 | 5 | 7 => println!(“Prime”),_ => println!(“A number”),}}

垃圾在手

经典垃圾收集有其缺点:大多数实现都会使程序暂时停止。为了解决这个问题,Rust使用了一组所谓的“零成本抽象”,以一种不那么烦人的方式模仿类似的行为。

原则上,每个资源都是以与Qt的父子子系统类似的方式创建的。但是,称为“借用”的功能使程序员能够暂时在资源之间转移所有权,从而将它们传递给系统。

不幸的是,对Rust的内存管理器的可能性的完整讨论将打破本文的限制 - 让它足以宣称Rust提供了一种非正统但可行的内存管理形式。

创建一个新项目

 Similarities to NPM are purely coincidental...

与NPM的相似之处纯属巧合......

虽然C和C ++代码可以分解为库,但这样做是一件令人烦恼且有点不舒服的任务。此外,确保所有必需的库都在他们需要的地方,即使是经验丰富的开发人员也希望避免这种情况。

JavaScript社区长期以来通过NPM等产品解决了这个问题。项目通过项目结构文件进行描述,其中包括对库和实际编译运行期间所需的其他元素的引用。

在Rust的情况下,一个名为Cargo的包管理器也做了类似的工作。创建一个新项目可以通过使用'cargo new'命令以类似于以下的方式完成:

tamhan @ tamhan-thinkpad:〜/ rustspace $ cargo new futuresample1 --bin创建二进制(应用程序)`futuresample1`项目tamhan @ tamhan-thinkpad:〜/ rustspace $

创建过程完成后,将生成类似于本页底部图片中所示的文件夹结构。

.toml文件充当'控制器' - 对于我们新生成的项目,该文件包含以下结构:

[package] name =“futuresample1”version =“0.1.0”authors = [“tamhan”] [dependencies]

与传说的.ini文件的相似之处并非完全一致:在与NPM不同的方式中,古老的配置文件格式也用于描述用于Rust项目的配置文件。 '[dependencies]'块对我们特别感兴趣 - 它包含所有外部库的列表,需要存在才能使编译成功。

添加数据包

手工创建Web服务器是最好留给masochists的烦人工作。相反,我们会选择一个框架。可悲的是,找到合适的人并不容易 - 访问AWWY的Web开发框架列表透露,有很多候选人。

我们会选择火箭,如果只是因为它似乎非常受欢迎并且已经看到2018年5月发布了更新。可悲的是,Rocket的开发人员倾向于喜欢新引入的语言功能,这就是为什么需要使用以下命令频繁更新Rust安装的原因:

tamhan @ tamhan-thinkpad:〜/ rustspace / futuresample1 $ rustup update &&货物更新

下一步主要是品味问题。大多数库都带有预先配置的入门项目,开发人员可以简单地从GitHub中获取。这样做对于''黄金'图书馆来说并不是一个坏主意 - 尽管只涉及一个图书馆,手动方法往往更富有成效。

接下来,打开.toml文件,然后按照以下内容修改“dependencies”部分,以包含最新版本的Rocket框架:

[dependencies] rocket =“0.3.6”rocket_codegen =“0.3.6”

Rocket的独特之处在于它需要包含总共两个包:除了主框架之外,还需要单独的代码生成器文件。无论哪种方式,我们的版本都包含两个库的特定版本 - Cargo也可以接受通配符,这使得程序能够在没有我们任何帮助的情况下“挑选毒药”。

有了这个问题,仍然存在一个问题:在包含.toml文件的文件夹中输入'cargo Run'以执行辅助编译,除其他事项外,还将从存储库下载相关代码库并编译整个辣酱玉米饼馅给你。

下一页:脚手架和深入分析



翻译字数超限