写给 Web 开发者的 Rust 语言入门教程(0.引言)

ETC主网预计10月10日激活MESS方案

比特币日报讯,10月2日,Ethereum Classic Labs官方发文称,正在实施51%的攻击解决方案MESS(修正指数主观评分)。核心开发人员和社区成员已经接受MESS方案,且该方案已于9月28日在Mordor测试网上被成功激活,并通过了严格的压力测试…

Rust 是一门什么样的编程语言?

如果谈起近些年来最让人感兴趣的编程语言,那我一定会选择 rust 语言。在 Stack Overflow 一年一度的编程语言调查中, rust 已经连续 5 年( 2016 至 2020 )被评为最受喜爱的编程语言,而且较第二名的优势还越来越大。这足以证明它是一项值得关注和研究的新技术。从核心的特征上看, rust 也充满了它的个性:
  • rust 没有垃圾回收器,它用创造性的设计来做到内存安全、让代码远离无效的内存访问,也可以轻易进行多线程开发;

  • rust 几乎没有 runtime ,使得它可以轻易与其它代码结合,也胜任嵌入式、 WebAssembly 等特殊环境;

  • rust 以“零开销抽象”为设计目标,保持充分的代码抽象能力同时做到极优秀的性能表现;

  • rust 巧妙综合了一部分面向对象和一部分函数式编程的特征,拥有很强的抽象表达能力,可维护性上佳。

总而言之, rust 是一门很有特色的编程语言。即使你不去真正实际使用它,学习这门编程语言的过程也会给你很多启发,让你充分思考怎么样编程才更加合理。
为什么要写这系列文章?
Rust 最大的缺点是上手很难:它是一门太有个性的语言了,以至于我们很将已有的其他编程语言经验套用上去。很多在其他语言中合理的逻辑表述,在 rust 中并不被编译器允许,因而很折磨新手。希望初学者做好一定的心理准备:编译器就像无处不在的交警,它约束你的各种行为,为的是避免各种你意识到和意识不到的问题。只要适应了 rust 的编程方式,就舒服很多了。

我自然也经历过这样的过程。我是从 2018 年初开始实际编写 rust 代码的,第一个可用的项目是一个游戏:

https://github.com/LastLeaf/ludum-dare-42

我也做了其他各种各样的实践。因而我想将我的各种实际经验分享出来,组合成这一系列文章。

基于此目的,这一系列文章会更偏向于从实际经验来表述,而不像普通书本一样逐个罗列各个语言特性。比如,我会更常使用“这种时候可以这样写”这种实用的表述,而不是“综合使用这个和另一个特性”这种更抽象而精确的表述。期待后者的话,我觉得官方的教程书做的已经非常好了:

https://doc.rust-lang.org/book/

日常工作中我基本上工作于 Web/JavaScript 环境,因而我会适当结合 web 开发中常见编程语言来比较陈述(事实上, JavaScript NPM 的后台核心服务就包含 rust 代码,因为 JavaScript 性能不尽如人意)。不过,不熟悉相关语言的话也不会影响整体阅读。
先从环境准备开始吧!

Rust 有一个安装工具 `rustup` :

https://rustup.rs
按照它的导引,可以将稳定版的 rust 编译器套件安装好。如果网络比较缓慢,可以考虑使用镜像,如 USTC 的:
https://mirrors.ustc.edu.cn/help/rust-static.html
这些都有比较详细的介绍了,不同系统的安装也有一些小差异,这里就不多复述了。

安装好之后,有几个命令将可用:

  • rustc 是 rust 主编译器,事实上我们一般不会直接调用它;

  • cargo 是 rust 的包管理器(类似于 JavaScript 的 NPM ),一般通过它来间接调用 rustc ;

  • 还有 rustdoc 文档工具等,大多也是通过 cargo 来间接调用。

除此以外,配合 IDE 插件来编程会比较友好。一般可以使用 RLS 插件( Visual Studio Code 中这个插件就叫 Rust ),这个插件会帮我们自动走 rust 编译流程来检查和标注语法错误,不过 rust 编译比较慢,所以可以考虑开启 build_on_save 选项来降低自动编译的频率;也可以考虑改用 rust-analyzer 插件,它分析代码更快但还不成熟。

Hello world!

Rust 的 Hello world 程序很简单(你甚至不用自己编写!),执行:

cargo new my-hello-world

就会在 my-hello-world 子目录中包含一段 hello world 代码的 rust 项目。

进入这个子目录后,执行:

cargo run

就会自动编译+运行这个 hello world 代码。下一章我们就从这个 hello world 项目开始吧!

在比特币日报读懂区块链和数字货币,加入Telegram获得第一手区块链、加密货币新闻报道。

紫光国微:公司具备数字货币应用相关产品和技术储备

比特币日报讯,紫光国微在深交所互动易平台回答投资者提问称,公司具备数字货币应用相关的产品和技术储备,可以提供安全载体,以及支付流程的数据保护和安全认证。新手快速入金,可以注册币安或okex,不懂可以群里问或私聊我。 在比特币日报读懂区块链和数字货币,加入Tel…

Click to rate this post!
[Total: 0 Average: 0]

人已赞赏
Go语言技术开发名家说每日优选

面试题:请用 golang 实现单链的添加,删除以及翻转

2020-9-23 11:13:45

Go语言技术开发Rust开发

源码分享:Go语言开发一个收支记账软件

2020-10-4 10:00:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索