Skip to content

daheige/rust-in-action

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust practical project development

书名:《Rust实战项目开发》

Author

  • 大黑哥,资深GO开发者(布道者)、资深PHP架构师、资深JS/Nodejs开发者、Lua爱好者、Rust语言布道者。
  • 具有10多年一线开发经验,先后从事千万级电商平台、海量邮件群发、游戏、金融、Sass等不同行业的开发和架构设计。
  • 在微服务、敏捷开发、项目管理、代码管理、架构设计、GO项目开发、MySQL性能优化、Redis分布式缓存、Kafka和Pulsar消息队列、DDD领域驱动设计、Rust系统编程等不同领域,具有深入的研究和丰富的实战经验。

Email

zhuwei313@hotmail.com

Summary

主要包含如下内容:

  • 第1章 Rust语言简介
  • 第2章 Rust模块化编程实战
  • 第3章 Rust JSON实战
  • 第4章 Rust Web编程实战
  • 第5章 Rust 命令行CLI实战
  • 第6章 Rust cron实战
  • 第7章 Rust中数据库和缓存实战
  • 第8章 Rust中消息队列MQ实战
  • 第9章 Rust FFI调用实战
  • 第10章 Rust并发编程与异步编程实战
  • 第11章 构建一个高并发的QA问答系统实战

本书具体内容查看:目录

Why did I write this book

我从事软件开发已经有10几个年头,最早接触软件开发这个行业是在2010年的暑假。那时候,我刚好是高中毕业,在家报完计算机科学与技术专业之后,我一个朋友送我一本《精通CSS与HTML设计模式》,他说:你可以先看看这本书,看你是否对计算机这个行业感兴趣,如果有兴趣就把这本书简单学习一下,以后对你学习计算机有帮助的。也这正是这本书,让我对计算机这个行业产生了浓厚的兴趣。那一年,我照着这本书的html和css示例代码,在文本编辑器中能够快速编写一些简单的网页,所见即所得的网页效果让我快速找到了一种成就感。

大学的几年时光里,我陆续学习了ASP、Javascript语言、PHP语言、Linux基础、MySQL基础、Redis基础、shell脚本、Python语言、Ruby语言、Nodejs等。在学这些技术的时,我是本着空杯的心态去学些每一个知识点,按照基础、实战、进阶的三部曲进行,边学习边写代码。有时候遇到实际问题,一些技术博客或网上搜到的答案不一定是对的。那时候,我多么想有一些前辈或大佬能够给予一些实战序列的书或者高质量的文章让我可以快速上手,并实践,而不至于在痛苦、挣扎中苦思:该怎么做才能让程序正常跑起来呢。从那时,我便认识到学习任何一门技术,都需要经历基础到实战的过程,最后才是进阶,融会贯通,精益求精。2014年大学毕业后,由于自身学习的技术还算可以,我便很快找到了一份PHP语言的工作,让我感觉到学习技术原来是有前途的。

从2014年到2017年,我一直使用是PHP和Nodejs语言,先后从事了海量邮件群发、Saas、电商平台、金融、游戏等不同行业的开发,也见证了整个移动互联网的高速发展。那时候,国内外软件开发的技术变化层出不穷,大部分的公司对软件开发的性能和效率的要求并不是很高,能运行就可以了。2017年,PHP技术在国内的发展受限,走下坡路,就业的机会也没有2014年那样容易,很多公司也不再热衷使用PHP语言来开发软件应用和项目。2017年中,我思考了很久,要不要转型到Go语言(国内外Go语言刚开始起步,很多公司都保持着观望态度),转过去了有没有风险呢,自己会不会找到一份工作呢?这些问题一直困惑我很久,经过一段时间的思考,我还是决定转型到Go语言。因为,我认为技术一直是在更新的,作为一个开发人员,需要不停地拥抱变化,在变化中学习和提升自己各方面的能力。时至今日,回想起来,那时候的选择是对的。在2018年后,国内外Go语言发展迅猛,特别是Docker容器和Kubernetes云原生技术的流行,让很多开发者从别的语言转型到Go语言,一些中小企业和大公司也陆续在2019年后逐步使用Go语言。

2020年5月份左右,我在一次偶然的机会中接触到了Rust语言。我当时在写一个Go语言的集合操作组件时,想把Go基础的数据类型,例如:int64、int32、string等类型,通过一个结构体以及一些方法就可以快速完成这些数据类型的集合处理。虽然说,那时候Go语言1.18版本已经有了泛型设计,使用泛型可以实现这个集合组件。但是,在我看来Go泛型设计依然不是好的处理方式。我甚至思考要不要用Go语言提供的模版机制实现这个功能。出于程序运行效率的缘故,我确实用了模版机制实现了。我后面问过一个朋友:这是好的处理方式吗?他说:为了性能和执行效率的话,模版机制相对比较好一些。他又说:我前段时间在学习Rust语言,感觉Rust语言的内存安全、类型安全、零成本抽象等方面做的很不错,特别是错误处理和泛型设计比Go语言做的好,你要不要尝试一下Rust。我听完后,感觉很nice的感觉。所以我买了张汉东老师的《Rust编程之道》以及《Rust程序设计》第一版过来学习。那时,学习Rust语言确实很有难度,主要是Rust语言中各种特性和概念,真的让人晕乎。有时候遇到问题,看Rust编译器给出的提示,半天都看不懂。我学了3个月的Rust基础之后,自以为感觉还可以,结果一到具体的实战项目,满是打击,不能把学到的Rust快速用起来。这种状态,一直困惑我好久。

2020年9月份,我决定将Rust基础和实践相结合,回过头又去看Rust官方提供的教程和《Rust程序设计》,把书里的每个基础知识边学习,边琢磨,然后把之前用Go语言写的工具链用Rust代码都写了一遍。也正是基础和实战相结合的方式(知行合一),让我快速把Rust官方库和常用的crates用起来了。后面三年的时间里,我开源了一些Rust项目和工具链方便Rust爱好者能够在有基础的前提下,快速进入实战。

Rust语言的出现,在系统编程、网络编程、命令行工具链、游戏开发、基础实施、区块链开发等众多领域,不仅给开发者带来了新的机会,另一方面可以让开发者能够拓宽自己的技术视野,在处理一些高性能、高效率的项目中多了一个选择的可能性。但是,Rust语言学习曲线陡峭,特别是Rust语言的各种概念和特性,学习资料的缺乏,给开发者带来了一些挑战。想要在学基础后,快速实战是有一定的难度的。或者说,想要在一些需要高性能的项目中使用Rust语言创造更多的业务价值和收益,是具有一定的挑战性。为了解决这些痛点和困惑,我从2023年4月份开始,决定把自己这些年学习Rust语言的亲身经历,分享给爱好Rust语言或是想通过Rust实战项目快速上手Rust语言的小伙伴,以帮助你们更好地学习并实战Rust语言。这也是我写本书的目的所在,希望本书中的实战项目能够帮你快速上手Rust,让你在学习Rust时候,不再像我当初那样迷茫。

大黑哥 深圳 2024年8月

Current progress

截止到2024-08-17日,进入出版社流程中,预计2025年2月份左右出版,各位Rust爱好者,尽请期待~

About

Rust practical project development

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published