目录
前言
Rust语言概念
作为开发者想必都知道,Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似,设计者想要在保证性能的同时提供更好的内存安全。据悉 Rust最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的,Rust的设计者们通过在研发Servo网站浏览器布局引擎过程中积累的经验优化了Rust语言和Rust编译器。
还有就是Rust编译器是在MIT License 和 Apache License 2.0双重协议声明下的免费开源软件,另外,Rust已经连续七年(2016,2017,2018,2019,2020, 2021, 2022)在Stack Overflow开发者调查的“最受喜爱编程语言”评选项目中折取桂冠。
关于《Rust系统编程》
接下来给大家推荐一本关于Rust系统编程学习必备的书籍,这是一本关于Rust系统编程实战类的干货图书,一经上市就登上了京东“计算机与互联网”图书排行榜前列。另外,关注本文博主,点赞+收藏本文,且在本文评论区评论“我要入门Rust编程”,将选取三名幸运读者送出纸质版《Rust系统编程》一本,截止时间:2024.01.14。入手《Rust系统编程》传送门:https://item.jd.com/13434725.html 或者 《Rust系统编程》([印]普拉布·艾什沃拉 著 刘君 译)【简介_书评_在线阅读】 - 当当图书,个人觉得这本书非常的不错,尤其是想构建可靠的系统级软件的开发者来讲,是一本不可多得的好书,值得拥有去学习。
Rust系统编程的核心点
- 内存安全:Rust的所有权系统和借用检查器能够在编译时防止常见的内存错误,如空指针引用、数据竞争等。
- 零成本抽象:Rust提供了高级抽象和模块化的编程机制,同时保证在运行时不引入额外的开销。
- 高性能:Rust的运行时性能接近于C/C++,并且具备对内存分配和线程管理的精细控制。
- 并发性:Rust的并发模型允许开发人员编写安全的并发代码,包括线程安全、跨线程通信等。
Rust系统编程的关键技术和工具
- unsafe关键字:Rust提供了unsafe关键字,用于处理需要绕过编译时检查的底层操作,如访问原始指针和调用不安全的函数。
- FFI(Foreign Function Interface):Rust支持与其他语言进行无缝集成,可以直接调用C语言函数和使用C语言的数据结构。
- Cargo构建系统:Cargo是Rust的默认构建系统,提供了便捷的项目管理、依赖管理和构建工具等功能。
编辑推荐
Rust是一种现代开源系统编程语言,它承诺并做到了3个领域的:Java的类型安全;C 的速度、表现力和效率;无须垃圾收集器的内存安全。通读完本书,你会对如何使用Rust管理和控制操作系统资源(如内存、文件、进程、线程、系统环境、外围设备、网络接口、终端和外壳程序)有清晰的了解,并掌握如何通过FFI构建跨语言绑定。在此过程中,你会对Rust为构建安全、高性能、可靠和高效的系统级软件带来的价值有深刻的认识。
内容简介
《Rust系统编程》详细阐述了与Rust系统编程相关的基本解决方案,主要包括Rust工具链和项目结构,Rust编程语言之旅,Rust标准库介绍,管理环境、命令行和时间,Rust中的内存管理,在Rust中使用文件和目录,在Rust中实现终端I/O,处理进程和信号,管理并发,处理设备I/O,学习网络编程,编写不安全Rust和FFI等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
图书目录
书中前言/序言
现代软件堆栈的规模和复杂性迅速发展。云、网络、数据科学、机器学习(ML)、开发运营一体化(DevOps)、容器、物联网(IoT)、嵌入式系统、分布式账本、虚拟现实(VR)和增强现实(AR)以及人工智能(AI)等技术领域不断发展和专业化,导致能够构建系统基础设施组件的系统软件开发人员严重短缺。
现代社会、企业和政府越来越依赖数字技术,因此更加重视开发安全、可靠和高效的系统软件和软件基础设施,以构建现代Web和移动应用程序。
数十年来,C和C++等系统编程语言在该领域证明了自己的实力,并提供了高度灵活的控制和性能,但这是以牺牲内存安全为代价的。
Java、C#、Python、Ruby和JavaScript等高级语言提供了内存安全,但对内存布局的控制较少,并且会受垃圾收集暂停的影响。
Rust是一种现代开源系统编程语言,它承诺并做到了3个领域的最佳:Java的类型安全;C++的速度、表现力和效率;无须垃圾收集器的内存安全。
本书采用了独特的三步法来教授Rust系统编程。本书的每一章都首先概述了类UNIX 操作系统(UNIX、Linux、macOS)中该主题的系统编程基础和Kernel系统调用,然后通过丰富的代码片段演示如何使用Rust标准库执行常见的系统调用(有些用例会用到外部Crate),再通过构建实际示例项目来强化这些知识的掌握。
通读完本书,你会对如何使用Rust管理和控制操作系统资源(如内存、文件、进程、线程、系统环境、外围设备、网络接口、终端和外壳程序)有清晰的了解,并掌握如何通过FFI构建跨语言绑定。在此过程中,你会对Rust为构建安全、高性能、可靠和高效的系统级软件带来的价值有深刻的认识。
本书读者
本书面向具有Rust基础知识但系统编程经验较少的程序开发人员,也适用于具有系统编程背景并将Rust视为C或C++替代品的人。
读者应该对C、C++、Java、Python、Ruby、JavaScript或Go语言的编程概念有基本的了解。
内容介绍
本书共分为3篇12章,具体内容如下。
第1篇:Rust系统编程入门,包括第1~4章。
第1章“Rust 工具链和项目结构”,介绍用于构建和管理依赖项、自动化测试和生成项目文档的Rust工具链。
第2章“Rust 编程语言之旅”,通过一个示例项目说明Rust编程语言的关键概念,包括类型系统、数据结构和内存管理基础。
第3章“Rust 标准库介绍”,详细讨论Rust标准库的关键模块,这些模块为Rust中的系统编程提供构建块和预定义功能。
第4章“管理环境、命令行和时间”,讨论如何以编程方式处理命令行参数、设置和操作进程环境,以及使用系统时间。
第2篇:在Rust中管理和控制系统资源,包括第5~9章。
第5章“Rust中的内存管理”,全面介绍Rust提供的内存管理工具,阐释 Linux内存管理的基础知识、C/C++的传统缺点,以及如何使用Rust来克服这些缺点。
第6章“在Rust中使用文件和目录”,介绍Linux文件系统的工作方式,以及如何在Rust中执行文件I/O操作,并提供一个在Rust中编写shell命令的项目示例。
第7章“在Rust中实现终端 I/O”,介绍伪终端应用程序的工作方式,以及如何创建这样一个程序。本章的项目示例是一个处理流的交互式应用程序。
第8章“处理进程和信号”,详细解释什么是进程、如何在Rust中处理进程、如何创建子进程并与子进程通信,以及如何处理信号和错误等。
第9章“管理并发”,阐释并发、并行和多线程的基础知识,以及在Rust中跨线程共享数据的各种机制,包括通道、互斥锁和引用计数器。
第3篇:高级主题,包括第10~12章。
第10章“处理设备I/O”,解释Linux中设备I/O的概念,如缓冲、标准输入和输出,以及设备I/O,并演示如何使用Rust控制I/O操作。
第11章“学习网络编程”,详细阐释Rust标准库中的低级网络原语和协议,并提供构建低级TCP和UDP服务器、客户端及TCP反向代理的项目示例。
第12章“编写不安全Rust和FFI”,描述与不安全Rust相关的主要机制和风险,并演示如何使用FFI将Rust与其他编程语言安全地连接起来。
充分利用本书
使用本书前,必须将Rustup安装在本地开发环境中。其网址如下:
GitHub - rust-lang/rustup: The Rust toolchain installer
官方安装说明网址如下:
https://www.rust-lang.org/tools/install
安装完成后,可使用以下命令检查rustc和cargo是否安装正确:
操作系统可使用Linux、macOS或Windows。
虽然Rust标准库在很大程度上是独立于平台的,但本书的总体风格是面向基于Linux/ UNIX系统的。因此,如果使用Windows系统,则在某些章节(或章节中的某些部分)中,建议使用本地Linux虚拟机,如Virtual box(也可以使用云虚拟机),这是因为部分示例代码和项目中使用的命令、外部Crate或共享库等可能是特定于Linux/UNIX系统的。
注意:使用Windows系统进行开发的注意事项
有些章节需要运行类UNIX操作系统(UNIX/Linux/macOS)的虚拟机或Docker镜像。
本书每章有两种类型的代码,它们放置在本书配套的GitHub存储库中:
与示例项目相对应的代码(对应章节中的命名源文件)。
独立的代码片段,放置在每章的miscellaneous文件夹中。
建议开发人员通过本书配套的GitHub存储库(下文将提供链接)访问代码。这样做有助于避免与复制和粘贴代码相关的任何潜在错误。
在使用cargo run命令构建和运行Rust程序时,如果运行该命令的用户ID没有足够的权限来执行系统级操作(如读取或写入文件),则可能会收到“权限被拒绝”之类的消息。在这种情况下,解决方法之一是使用以下命令运行程序:
下载示例代码文件
读者可以访问www.packtpub.com并通过个人账户下载本书的示例代码文件。具体步骤如下:
(1)注册并登录www.packtpub.com。
(2)在页面顶部的搜索框中输入图书名称Practical System Programming for Rust Developers(不区分大小写,也不必输入完整),即可看到本书出现在列表中,单击超链接,如图P-1所示。
图P-1 搜索图书
(3)在本书详情页面中,找到并单击Download code from GitHub(从GitHub中下载代码文件)按钮,如图P-2所示。
提示:如果看不到该下载按钮,可能是没有登录packtpub账号。该站点可免费注册账号。
(4)在本书GitHub源代码下载页面中,单击Code(代码)下拉按钮,在弹出的下拉菜单中选择Download ZIP(下载压缩包),如图P-3所示。
图P-2 单击下载代码的按钮
图P-3 下载GitHub存储库中的代码压缩包
下载文件后,请确保使用最新版本软件解压或析取文件夹:
WinRAR/7-Zip(Windows系统)。
Zipeg/iZip/UnRarX(macOS系统)。
7-Zip/PeaZip(Linux系统)。
你也可以直接访问本书在GitHub上的存储库,其网址如下:
如果代码有更新,则也会在现有GitHub存储库上更新。
本书中的代码片段是为学习而设计的,因此可能并不满足生产环境中的要求。也就是说,虽然代码示例是实用的并且使用了地道的Rust语言,但它们并不以具有强大错误处理机制的全功能为目标,无法涵盖所有极端情况。这是有意为之,以免妨碍你的学习过程。
下载彩色图像
本书提供了一个PDF文件,其中包含本书中使用的屏幕截图和图表的彩色图像,可以通过以下地址下载:
http://www.packtpub.com/sites/default/files/downloads/9781800560963_ColorImages.pdf
本书约定
本书中使用了许多文本约定。
(1)有关代码块的设置如下所示:
fn main() {
println!("Hello, time now is {:}", chrono::Utc::now());
}
(2)当我们希望让你注意代码块的特定部分时,相关行或项目采用粗体表示,示例如下:
fn main() {
println!("Hello, time now is {:}", chrono::Utc::now());
}
(3)任何命令行输入或输出都采用如下所示的粗体代码形式:
cargo new Chapter2 && cd Chapter2
(4)术语或重要单词采用中英文对照形式给出,在括号内保留其英文原文,示例如下:
分词器或标记化器(tokenizer)是本项目系统设计中的一个模块,它从算术表达式中读取一个或多个字符并将其转换为一个标记(token)。换句话说,输入是一组字符,而输出则是一组标记。
(5)本书使用了以下两个图标:
表示警告或重要的注意事项。
表示提示或小技巧。
《Rust系统编程》全书速览
结束语
通过上面的介绍,想必大家都知道Rust是一种强大的系统编程语言,具备内存安全、高性能和并发性等关键特点,通过使用Rust进行系统编程,开发人员可以编写可靠、高效且安全的系统级应用程序。上文简要介绍了Rust系统编程的基本概念、核心特点、关键技术和实践案例,并展望了Rust系统编程的挑战和未来发展方向。希望本文对读者了解Rust系统编程的基本概念和应用场景有所帮助,并激发对Rust的兴趣和探索,通过介绍,读者可以深入了解Rust系统编程的更多细节,并将其应用于实际的系统级开发中,从而构建高性能、可靠和安全的软件系统。