如何开始尝试Rust?

554 阅读4分钟

这篇文章主要是针对那些还没有尝试过Rust或者正在开始玩Rust的开发者。

在这篇文章中我们做一个简单的检索信息程序,将一个csv文件作为输入(Netflix的可用节目),并对数据集进行一些查询。 除此之外,我还会介绍一下我学到的最有趣的东西;同时附带一些有用的链接。

环境搭建

非常简单,只要按照下面的链接就可以了。

构建工具

Cargo 是Rust的依赖包管理程序。Cargo对Rust来说就像Maven对Java,Npm对Node,或者sbt对Scala一样的地位。 在任何Rust项目的根目录下都有一个Cargo.toml。这个文件可以是这样的:

image.png

从上面可以看出有几个可执行程序,它们必须被定义在bin部分。

可以看下面的链接,了解 cargo 是如何工作的:

doc.rust-lang.org/cargo/getti…

OOP

对象是用关键字 struct 来定义的。默认情况下,结构和属性的可见性是 private。要使它们公开,我们只需要设置关键字 pub

image.png

  1. 方法:对象的方法编写在一个 impl 代码块中。

image.png

  1. 同时每条语句都以分号结尾。 如果一个函数的最后一条语句没有以分号结束,它将被解释为:函数的返回。下面的两个例子都是一样的:

image.png

image.png

  1. self 关键字允许访问对象的属性和方法。

  2. 默认情况下,变量是不可变的。要使它们成为可变,我们需要使用关键字 mut

image.png

image.png

  1. 类型:我们可以很容易地定义新的类型(或别名)。

image.png

  1. Trait: 在某些方面类似于接口,但它们提供了额外的功能。

    • Trait 包含要实现的方法的签名。另一方面,默认的实现也可以在trait中定义

    image.png

    • 另一方面,我们也可以为现有的类型提供trait的实现。

    image.png

  2. 泛型: Rust支持泛型(Golang...你来得太晚了)。 这允许我们构建更多可重用的代码。Trait 部分的最后一个例子包含了一个用例。

import

我们可以通过使用关键字 use 来导入模块。在Rust中导入模块的语法很强大:

image.png

自定义错误

编写我们自己的业务错误对于编写易于阅读的代码是很有用的。要做到这一点,我们只需要为我们的结构实现 Trait Display & Error

image.png

image.png

闭包

Rust中的闭包,也叫lambda表达式,一种捕获上下文环境的函数。例如,一个捕获x变量的闭包:

image.png

image.png

代码结构

就像在许多其他语言中一样,你会发现有几篇关于哪一种是组织rust项目的最佳方式的文章: dev.to/ghost/rust-…

Rustmacro 有很好的支持。macro 是一种你能编写出其他代码的代码,这被称为元编程(metaprogramming)。宏提供了类似于函数的功能,但没有运行时的成本。然而会有一些编译时的成本,因为宏在编译时会被扩展。

一句话:元编程很强大。

函数式编程

Rust提供了高阶函数(HOF)。这些函数可以接收一个或多个函数和/或产生一个更有用的函数。HOF和懒惰迭代器使Rust具有了函数的味道:

image.png

相关链接:blog.madhukaraphatak.com/functional-…

代码

书籍和文章对于了解技术是不错,但实际上只有当你把你所读的东西付诸实践时,你才能学到东西。

你可以按照下面说的自行实践起来:

  1. 创建一个新的可执行文件(改Cargo.toml并在bin目录下创建一个新的文件)
  2. 打印发布日期在3年以内的节目的标题(大写)[以及其他你想尝试的查询]
  3. 为加载资源目录中的netflix.json文件编写一个实现「cargo run resources/nextflix.json

image.png

我的感觉

Rust看起来很不错,它提供了很好的机制来构建软件。我希望我能够继续不断学习下去,并且能够尽快可以在生产中用起来。

不过即使是文档也是如此之好,而且这门语言吸取了几种编程语言的精华,我担心它的成功将取决于在未来几年里有多少构建商业软件的框架出现。

遗憾的是,Rust社区并不大,而且说实话,我不知道有哪些公司愿意为这种挑战下注......


「这是我参与2022首次更文挑战的第 19 天,活动详情查看:2022首次更文挑战」。