rust编程指南02-进入rust语言世界(代码片段)

编程学院 编程学院     2023-02-18     523

关键词:

原文链接:https://wayto.rs/about-book.html
 
欢迎大家加入Rust编程学院,中国最好的Rust学习社区

  1. 官网:https://college.rs
  2. QQ群:1009730433

进入Rust编程世界

一、Rust发展历程

Rust 最早是 Mozilla 雇员 Graydon Hoare 的一个个人项目,从 2009 年开始,得到了 Mozilla 研究院的支助,2010 年项目对外公布。2010 ~2011 年间实现的自举。从此以后,Rust 经历了巨大的设计变化和反复(历程极其艰辛),终于在 2015 年 5 月 15日发布了 1.0 版。在这个研发过程中,Rust 建立了一个强大活跃的社区,形成了一整套完善稳定的项目贡献机制(Rust能够飞速发展,与这一点密不可分)。Rust 现在由 Rust项目开发者社区维护。

大家可能疑惑Rust为啥用了这么久才到1.0版本?与之相比,Go语言2009年发布,却在2012年仅用3年就发布了1.0版本。首先是因为Rust语言特性较为复杂,因此需要全盘考虑的问题非常多;其次,Rust当时的参与者太多了,七嘴八舌的声音也很多,导致了众口难调,而Rust开发团队又非常重视社区的意见 ;最后,一旦1.0快速发布,那么后续大部分语言特性就无法再修改,对于有完美强迫症的Rust开发者团队来说,某种程度上的不完美是不可接受的。因此,Rust语言用了足足6年时间,才发布了尽善尽美的1.0版本。

二、使用现状

一般来说,一门编程语言能在某一年成为全世界最受欢迎的语言,那锣鼓喧天、昂首挺胸都是少不了的,没办法,能从全世界这么多编程语言中脱颖而出成为最受欢迎的语言,属实困难。可是有一门语言,它从发布1.0版本开始,连续6年成为了全世界最受欢迎的语言,是的,它就是Rust,这不,2021年又成为最受欢迎的语言了。

你可能会想,既然这么受欢迎,那肯定使用很广吧?可惜现实给了我们重重一击:在国外,Rust尚且还行,在各大公司的基础服务和底层都屡见身影,在github上也算是呼风唤雨,可是到了国内,说句不好听的,能听说过Rust大名的,已经算百里挑一的优秀了,就业环境更是糟糕。

如何改变这一切?这就是Rust编程学院想做的事情,通过大家一起的努力,达成以下目标:

  1. 输出成体系的学习教程,大幅降低Rust的学习和使用难度
  2. 打造至少一个全民级项目,提升Rust在国内知名度
  3. 建立一个持续活跃的社区,为Rust用户提供一个交流、解惑的平台

其中第一点是尤为重要的,只有一套成体系的学习教程,才能让用户快速上手并且喜欢上Rust语言,一旦粉丝效应形成,那么Rust在国内的影响力就会在大家的自发宣传下迅速提升。

部分主要使用者

  • AWS从2017年开始就用Rust实现了它们的无服务器计算平台: AWS Lambda 和 AWS Fargate, 并且用Rust重写了Bottlerocket OS和AWS Nitro系统,这两个是弹性计算云(EC2)的重要服务
  • Cloudflare也是Rust的重度用户,DNS、无服务计算、网络包监控等灯
  • Dropbox的底层存储服务完全由Rust重写,达到了数万PB的规模
  • Google除了在安卓系统的部分模块中使用Rust外,还在它最新的操作系统fuchsia中重度使用Rust
  • Facebook使用Rust来增强自己的网页端、移动端和API服务的性能,同时还写了Hack编程语言的虚拟机部分模块
  • Microsoft使用Rust为Azure平台实现了一些组件,其中包括IoT服务的安全守护服务
  • githu和npmjs.com,使用Rust提供了高达每天13亿次的npm包下载数量
  • Rust目前已经成为全世界区块链平台的首选开发语言
  • Tidb,国内最有名的开源分布式数据库
  • 国内高频交易服务

类似的还有很多,总之Rust的发展态势非常喜人,生态发展也异常迅速,颇有燎原之火之势。

Github

Github上的Rust项目可以在这里查看: https://github.com/topics/rust?l=rust,里面的项目是按照star数降序排列。

三、适用人群

Rust 因多种原因适用于很多开发者。让我们讨论几个最重要的群体。

开发者团队

由于Rust语言拥有异常强大的编译器和语言特性,因此Rust的代码天然就会比其它语言有更少的Bug,同时Rust拥有非常完善的工具链、最好的包管理工具,这些叠加在一起,决定了Rust非常适合大型开发者团队的协作开发。

也许Rust在开发速度上不是最快的,但是从开发 + 维护的角度来看,这个成本绝对是各个语言中最小的之一,当然如果你的公司就追求做出来能用就行,那Rust确实不太适合。

学生

Rust的语言特点决定了它天然就跟底层系统很亲和,通过Rust你能学到操作系统、网络等计算机原理,现在不少名校都引入了Rust作为计算机系统课程学习的重要组成部分,例如MIT对Rust的使用就非常广泛。

同时Rust具有一个友善、活跃的社区,社区中的人非常热衷于为大家解答问题,因此也很适合学生学习一门新的恶语言。

公司

数以百计的公司,无论规模大小,都在生产中使用Rust来完成各种任务。这些任务包括命令行工具、web 服务、DevOps 工具、嵌入式设备、音视频分析与转码、加密货币(cryptocurrencies)、生物信息学(bioinformatics)、搜索引擎、物联网(internet of things, IOT)程序、机器学习、云计算等,甚至还包括 Firefox 浏览器的大部分内容。

开源开发者

Rust连续6年成为全世界最受欢迎的语言,这个就是来自于开源社区的厚爱,在github上,Rust目前各种类型的开源项目都非常火,同时有很多领域还等着大家去填补空白,这些都意味着在开源世界扬名立万的机会。

为一门成熟的语言锦上添花,远不如为一门新语言雪中送炭,你能获得比在其他语言更多的star和名气。

重视速度和稳定性的开发者

速度分为两种:运行速度和开发速度。

开发速度方面,Rust拥有和C、C++几乎相当的性能,甚至由于Rust的各种零开销抽象以及安全的编程方式,你能轻松写出和那些优化过后的C++代码一样甚至更高的性能: ripgrep就是很典型的例子。

同时,在你熟悉Rust后,由于强大的编译器、标准库文档、语言高级特性等,Rust能让你拥有不属于其它静态语言的开发速度,同时大幅减少后期维护成本。

最后,Rust语言不仅仅适用于这些人群,这些列出来的只是从Rust中最受益的人群。总的来说Rust的目标是消除数十年来程序员不得不做的权衡:安全 生产力,速度 工程性。

请跟随本书的脚步去尝试下Rust,看看这个选择是否适合你。

四、Rust语言版本更新

与其它语言相比,Rust的更新迭代较为频繁(得益于精心设计过的发布流程以及Rust语言开发者团队管理):

  • 每6周发布一个迭代版本
  • 2-3年发布一个新的大版本:Rust 2018 edition,Rust 2021 edtion

好处在于,可以满足不同的用户群体的需求:

  • 对于活跃的Rust用户,他们总是能很快获取到新的语言内容,毕竟,尝鲜是技术爱好者的共同特点:)
  • 对于一般的用户,edition的发布会告诉这些用户:Rust语言相比上次大版本发布,有了重大的改进,值得一看
  • 对于Rust语言开发者,可以让他们的工作成果更快的被世人所知,不必锦衣夜行

具体参见附录-Rust版本发布

好了,相信大家听了这么多Rust的优点,已经迫不及待想要开始学习旅程,OK,let’s go.

rust学习教程02-rust语言简介

本文节选自<<Rust语言圣经>>一书欢迎大家加入Rust编程学院,一起学习交流:QQ群:1009730433进入Rust编程世界一、Rust发展历程Rust最早是Mozilla雇员GraydonHoare的一个个人项目,从2009年开始,得到了Mozilla研究院的... 查看详情

rust入坑指南:齐头并进(下)(代码片段)

...中我们聊了Rust如何管理线程以及如何利用Rust中的锁进行编程。今天我们继续学习并发编程,原子类型许多编程语言都会提供原子类型,Rust也不例外,在前文中我们聊了Rust中锁的使用,有了锁,就要小心死锁的问题,Rust虽然声... 查看详情

rust编程指南01-书本简介(代码片段)

...文链接:https://wayto.rs/about-book.html 欢迎大家加入Rust编程学院,中国最好的Rust学习社区官网:https://college.rsQQ群:1009730433Rust编程指南(TheWayToRust)做任何事情,初心和目标很重要,过程也很重要,那么这... 查看详情

rust入坑指南之ownership

...它将许多最佳实践和先进技术整合在了一起,是未来系统编程的重要选择”。越来越多大学的课程设计中也将rust作为了一个选项,比如获得国家精品课程的清华大学的操作系统:<​​http://rcore-os.cn/rCore-Tutorial-Book-v3/​​>如... 查看详情

rust入坑指南:坑主驾到(代码片段)

...的,下面我先跳了,各位请随意。Rust简介众所周知,在编程语言中,更易读的高级语言和控制底层资源的低级语言是一对矛盾体。Rust想要挑战这一现状,它尝试为开发者提供更好的体验的同时给予开发者控制底层细节的权限(... 查看详情

rust编程语言入门(代码片段)

Rust编程语言入门Rust简介为什么要用Rust?Rust是一种令人兴奋的新编程语言,它可以让每个人编写可靠且高效的软件。它可以用来替换C/C++,Rust和他们具有同样的性能,但是很多常见的bug在编译时就可以被消灭。Rust是一种通用的... 查看详情

一天一门编程语言rust语言程序设计极简教程(代码片段)

...>的使用四、Rust智能指针的优缺点优点缺点Rust语言异步编程代码实例什么是异步编程Rust的异步编程实现使用FutureAPI的示例使用async/await语法小结Rust语言实现斐波那契数列代码实例:循环与递归1.什么是斐波那契数列2.Rust语... 查看详情

rust能否替代c语言,主宰linux的世界?

现有的编程语言非常多,我们都习惯了要在性能、表达力和内存安全之间取舍,直到Rust横空出世。 对于Rust这个新语言,很多人可能都听过,但是没用过。实际上,早从16年起,Rust已经连续六年霸榜,... 查看详情

rust能否替代c语言,主宰linux的世界?

现有的编程语言非常多,我们都习惯了要在性能、表达力和内存安全之间取舍,直到Rust横空出世。 对于Rust这个新语言,很多人可能都听过,但是没用过。实际上,早从16年起,Rust已经连续六年霸榜,... 查看详情

rust编程语言入门之rust的面向对象编程特性(代码片段)

Rust的面向对象编程特性一、面向对象语言的特性Rust是面向对象编程语言吗?Rust受到多种编程范式的影响,包括面向对象面向对象通常包含以下特性:命名对象、封装、继承对象包含数据和行为“设计模式四人帮”在《设计模型... 查看详情

rust语言新人入门指南

首先,学习Rust不能急躁。如果你抱着之前1天上手Python,2天入门Go的经验和优越感来学习Rust的话,你可能会遭遇严重的失败感。如果你来自Haskell/Ocaml等函数式语言社区,你会有相当的亲切感。对于有丰富C++开发经验的同学来说,... 查看详情

rust语言的多线程编程

Concurrency并发在计算机科学上,并发Concurrency和并行 parallelism是非常重要的话题,也是软件产业一个热门的话题。电脑有了越来越多的的核,但喝多程序员没有准备好充分利用它们。Rust的内存安全特性也应用于并发。Rust程序... 查看详情

rust编程语言入门之项目实例:-命令行程序(代码片段)

项目实例:-命令行程序一、实例:接收命令行参数本章内容12.1接收命令行参数12.2读取文件12.3重构:改进模块和错误处理12.4使用TDD(测试驱动开发)开发库功能12.5使用环境变量12.6将错误消息写入标准错误而不是标准输出创建... 查看详情

rust初识及rust的esapi(代码片段)

RustRust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似,但是设计者想要在保证性能的同时提供更好的内存安全。Rust致力... 查看详情

rust运行时指南(官方文档翻译)(代码片段)

https://blog.csdn.net/liigo/article/details/19249145Rust运行时指南(官方文档翻译)AGuidetotheRustRuntime,byAlexCrichtonandBrianAnderson翻译:庄晓立(Liigo),com.liigo@gmail.com,G+,Weibo,CSDN,Rust中文圈日期:2014年2月。 2015年5 查看详情

rust编程语言入门之编写自动化测试(代码片段)

编写自动化测试一、编写和运行测试测试(函数)测试:函数验证非测试代码的功能是否和预期一致测试函数体(通常)执行的3个操作:准备数据/状态运行被测试的代码断言(Assert)结果解剖测试函数测试函数需要使用test属性... 查看详情

rust语言圣经06-不仅仅是helloworld(代码片段)

...#xff1a;https://course.rs/first-try/hello-world.html 欢迎大家加入Rust编程学院,中国最好的Rust学习社区官网:https://college.rsQQ群:1009730433不仅仅是Helloworld几乎所有教程中安装的最后一个环节都是helloworld,我们也不能免俗... 查看详情

rust编程语言一(代码片段)

Rust编程语言一usestd::env;fnmain()println!("HelloWorld!\\nI'maRustacean!");println!("days",3);println!("0,thisis1.1,thisis0","Alice","Bob");println!("subjectverbobject",object="thelazydog",subject="thequickbrownfox",ver... 查看详情