游客,欢迎您!
登录
注册
您的建议
0
高级检索
全部
题名
ISBN
作者
出版社
客户端下载
个人中心
学科
哲学
哲学
经济学
理论经济学
应用经济学
法学
法学
政治学
社会学
民族学
马克思主义理论
公安学
教育学
教育学
心理学
体育学
文学
中国语言文学
外国语言文学
新闻传播学
历史学
考古学
中国史
世界史
理学
数学
物理学
化学
天文学
地理学
大气科学
海洋科学
地球物理学
地质学
生物学
系统科学
科学技术史
生态学
统计学
工学
力学
机械工程
光学工程
仪器科学与技术
材料科学与工程
冶金工程
动力工程及工程热物理
电气工程
电子科学与技术
信息与通信工程
控制科学与工程
计算机科学与技术
建筑学
土木工程
水利工程
测绘科学与技术
化学工程与技术
地质资源与地质工程
矿业工程
石油与天然气工程
纺织科学与工程
轻工技术与工程
交通运输工程
船舶与海洋工程
航空宇航科学与技术
兵器科学与技术
核科学与技术
农业工程
林业工程
环境科学与工程
生物医学工程
食品科学与工程
城乡规划学
风景园林学
软件工程
生物工程
安全科学与工程
公安技术
农学
作物学
园艺学
农业资源利用
植物保护
畜牧学
兽医学
林学
水产
草学
医学
基础医学
临床医学
口腔医学
公共卫生与预防医学
中医学
中西医结合
药学
中药学
特种医学
医学技术
护理学
军事学
军事思想及军事历史
战略学
战役学
战术学
军队指挥学
军制学
军队政治工作学
军事后勤学与军事装备学
军事装备学
军事训练学
管理学
管理科学与工程
工商管理
农林经济管理
公共管理
图书馆、情报与档案管理
艺术学
艺术学理论
音乐与舞蹈学
戏剧与影视学
美术学
设计学
中图法
A 马克思主义、列宁主义、毛泽东思想、邓小平理论
B 哲学、宗教
哲学理论
C 社会科学总论
社会学
D 政治、法律
政治理论
E 军事
军事理论
、
世界军事
F 经济
经济学
、
农业经济
G 文化、科学、教育、体育
H 语言、文字
语言学
、
汉语
I 文学
文学理论
、
世界文学
J 艺术
艺术理论
、
摄影艺术
K 历史、地理
史学理论
N 自然科学总论
系统科学
O 数理科学和化学
数学
P 天文学、地球科学
天文学
Q 生物科学
植物学
、
动物学
R 医药、卫生
医学研究方法
S 农业科学
农业经济
、
园艺
T 工业技术
工业技术理论
U 交通运输
交通运输经济
V 航空、航天
航空、航天医学
X 环境科学、安全科学
Z 综合性图书
丛书
、
辞典
首页
新书专区
专题推荐
排行榜
数字资源平台
>
工学
>
计算机科学与技术(可授工学、理学学位)
>
计算机软件与理论
>
Rust权威指南
阅读次数:
7
下载次数:
1
荐购次数:
1
收藏次数:
0
Rust权威指南
作者:
Steve Klabnik
,
Carol Nichols
著
其他责任者:
毛靖凯译
出版社:
电子工业出版社
出版时间:
2025.02
ISBN:
978-7-121-49473-4
主题:
程序语言
中图法分类号:
TP312-62
【中图法分类】
T 工业技术
>
TP自动化技术、计算机技术
>
TP3计算技术、计算机技术
>
TP31计算机软件
【学科分类】
工学
>
计算机科学与技术(可授工学、理学学位)
>
计算机软件与理论
工学
>
电子信息
>
软件工程
版本号:
第2版
建议阅读终端:
扫描用手机阅读此书支持Android/iPhone
在线试读
PDF格式
下载
PDF下载
分享到
新浪微博
QQ空间
豆瓣网
注:如果您的电脑尚未安装PC客户端,请先
安装客户端
后再下载阅读!
编辑推荐
简介
目录
评论
暂无推荐
简介
本书由浅入深地探讨了Rust语言的方方面面。从创建函数、选择数据结构及绑定变量入手,逐步介绍所有权、trait、生命周期、安全保证等高级概念,模式匹配、错误处理、包管理、函数式特性、并发机制等实用工具,以及两个完整的项目开发实战案例。
目录
封面
书名页
内容简介
版权信息
推荐语
译者序
序
说明
致谢
前言
目录
1 入门指南
安装
在Linux或macOS环境中安装Rust
在Windows环境中安装Rust
常见问题
更新与卸载
本地文档
Hello,world!
创建一个文件夹
编写并运行一个Rust程序
Rust程序剖析
编译与运行是两个不同的步骤
Hello,Cargo!
使用Cargo创建一个项目
使用Cargo构建和运行项目
以Release模式进行构建
学会习惯Cargo
总结
2 编写一个猜数游戏
创建一个新的项目
处理一次猜测
使用变量存储值
获得用户的输入
使用Result类型处理可能失败的情况
通过println!中的占位符输出对应的值
测试第一部分
生成一个保密数字
借助包获得更多功能
生成一个随机数
比较猜测数字与保密数字
使用循环实现多次猜测
在猜测成功时优雅地退出
处理非法输入
总结
3 通用编程概念
变量与可变性
常量
隐藏
数据类型
标量类型
复合类型
函数
参数
语句和表达式
函数的返回值
注释
控制流
if表达式
使用循环重复执行代码
总结
4 认识所有权
什么是所有权
所有权规则
变量作用域
String类型
内存与分配
所有权与函数
返回值与作用域
引用与借用
可变引用
悬垂引用
引用的规则
切片类型
字符串切片
其他类型的切片
总结
5 使用结构体组织相关联的数据
定义并实例化结构体
使用简化版的字段初始化方法
使用结构体更新语法,基于其他实例来创建新实例
使用不需要对字段命名的元组结构体来创建不同的类型
没有任何字段的单元结构体
一个使用结构体的示例程序
使用元组重构代码
使用结构体重构代码:增加有意义的描述信息
通过派生trait增加实用功能
方法
定义方法
带有更多参数的方法
关联函数
多个impl块
总结
6 枚举与模式匹配
定义枚举
枚举值
Option枚举及其在空值处理方面的优势
控制流结构match
绑定值的模式
匹配Option
匹配必须穷举所有的可能性
通配模式及_占位符
简单控制流if let
总结
7 使用包、单元包和模块管理日渐复杂的项目
包与单元包
通过定义模块来控制作用域及私有性
用于在模块树中指明条目的路径
使用pub关键字来暴露路径
从super关键字开始构造相对路径
将结构体或枚举声明为公共的
使用use关键字将路径导入作用域
创建use路径时的惯用方式
使用as关键字来提供新的名称
使用pub use重导出名称
使用外部包
使用嵌套路径来清理众多的use语句
通配符
将模块拆分为不同的文件
总结
8 通用集合类型
使用动态数组存储多个值
创建动态数组
更新动态数组
读取动态数组中的元素
遍历动态数组中的值
使用枚举存储多个类型的值
在销毁动态数组时也会销毁其中的元素
使用字符串存储UTF-8编码的文本
字符串是什么
创建一个新的字符串
更新字符串
索引字符串
字符串切片
遍历字符串的方法
字符串的确没那么简单
在哈希映射中存储键值对
创建一个新的哈希映射
访问哈希映射中的值
哈希映射与所有权
更新哈希映射
哈希函数
总结
9 错误处理
不可恢复错误与panic!
可恢复错误与Result
匹配不同的错误
传播错误
要不要使用panic!
示例、原型代码和测试
当你比编译器拥有更多信息时
错误处理指导原则
创建自定义类型进行有效性验证
总结
10 泛型、trait与生命周期
通过将代码提取为函数来减少重复工作
泛型数据类型
在函数定义中
在结构体定义中
在枚举定义中
在方法定义中
泛型代码的性能问题
trait:定义共享行为
定义trait
为类型实现trait
默认实现
使用trait作为参数
返回实现了trait的类型
使用trait约束有条件地实现方法
使用生命周期保证引用的有效性
使用生命周期来避免悬垂引用
借用检查器
函数中的泛型生命周期
生命周期标注语法
函数签名中的生命周期标注
深入理解生命周期
结构体定义中的生命周期标注
生命周期省略
方法定义中的生命周期标注
静态生命周期
同时使用泛型参数、trait约束与生命周期
总结
11 编写自动化测试
如何编写测试
测试函数的构成
使用assert!宏检查结果
使用assert_eq!和assert_ne!宏判断相等性
添加自定义的错误提示信息
使用should_panic检查panic
使用Result
编写测试
控制测试的运行方式
并行或串行地运行测试
显示函数输出
运行部分特定名称的测试
通过显式指定来忽略某些测试
测试的组织结构
单元测试
集成测试
总结
12 I/O项目:编写一个命令行程序
接收命令行参数
读取参数值
将参数值存入变量中
读取文件
重构代码以增强模块化程度和错误处理能力
二进制项目的关注点分离
修正错误处理逻辑
从main中分离逻辑
将代码分离为独立的代码包
使用测试驱动开发编写库功能
编写一个会失败的测试
编写可以通过测试的代码
处理环境变量
为不区分大小写的search函数编写一个会失败的测试
实现search_case_insensitive函数
将错误提示信息打印到标准错误流而不是标准输出流
确认错误被写到了哪里
将错误提示信息打印到标准错误流
总结
13 函数式语言特性:迭代器与闭包
闭包:能够捕获环境的匿名函数
使用闭包捕获环境
闭包的类型推断和类型标注
捕获引用或移动所有权
将捕获的值移出闭包及Fn系列trait
使用迭代器处理元素序列
Iterator trait和next方法
消耗迭代器的方法
生成其他迭代器的方法
使用闭包捕获环境
改进I/O项目
使用迭代器代替clone
使用迭代器适配器让代码更加清晰
在循环与迭代器之间做出选择
比较循环和迭代器的性能
总结
14 进一步认识Cargo及crates.io
使用发布配置定制构建
将包发布到crates.io平台
编写有用的文档注释
使用pub use导出合适的公共API
创建crates.io账户
为包添加元数据
发布到crates.io
发布已有包的新版本
使用cargo yank命令从crates.io上撤回版本
Cargo工作空间
创建工作空间
在工作空间中创建第二个包
使用cargo install安装二进制文件
使用自定义命令扩展Cargo的功能
总结
15 智能指针
使用Box
在堆上分配数据
使用Box
在堆上存储数据
使用装箱定义递归类型
通过Deref trait将智能指针视作常规引用
跳转到指针指向的值
把Box
当成引用来操作
定义我们自己的智能指针
实现Deref trait
函数和方法的隐式解引用转换
解引用转换与可变性
借助Drop trait在清理时运行代码
基于引用计数的智能指针Rc
使用Rc
共享数据
克隆Rc
会增加引用计数
RefCell
和内部可变性模式
使用RefCell
在运行时检查借用规则
内部可变性:可变地借用一个不可变的值
结合使用Rc
和RefCell
来实现拥有多重所有权的可变数据
循环引用会造成内存泄漏
创建循环引用
使用Weak
代替Rc
来避免循环引用
总结
16 无畏并发
使用线程同时运行代码
使用spawn创建新线程
使用join句柄等待所有线程结束
在线程中使用move闭包
使用消息传递在线程间转移数据
通道和所有权转移
发送多个值并观察接收者的等待过程
通过克隆发送者创建多个生产者
共享状态的并发
互斥体一次只允许一个线程访问数据
RefCell
/Rc
和Mutex
/Arc
之间的相似性
使用Send trait和Sync trait对并发进行扩展
允许线程间转移所有权的Send trait
允许多个线程同时访问的Sync trait
手动实现Send和Sync是不安全的
总结
17 Rust的面向对象编程特性
面向对象语言的特性
对象包含数据和行为
封装实现细节
作为类型系统和代码共享机制的继承
使用trait对象存储不同类型的值
为共有行为定义一个trait
实现trait
trait对象会执行动态派发
实现一种面向对象的设计模式
定义Post并创建一个处于草稿状态的新实例
存储文章内容的文本
确保草稿的可读内容为空
请求审批文章并改变其状态
添加approve方法来改变content的行为
状态模式的权衡取舍
总结
18 模式与匹配
所有可以使用模式的场合
match分支
if let条件表达式
while let条件循环
for循环
let语句
函数的参数
可失败性:模式是否会匹配失败
模式语法
匹配字面量
匹配命名变量
多重模式
使用“..=”匹配区间值
通过解构分解值
忽略模式中的值
使用匹配守卫添加额外条件
@绑定
总结
19 高级特性
不安全Rust
不安全超能力
解引用裸指针
调用不安全的函数或方法
访问或修改可变静态变量
实现不安全trait
访问联合体中的字段
使用不安全代码的时机
高级trait
关联类型
默认泛型参数和运算符重载
消除同名方法在调用时的歧义
使用超trait
使用newtype模式在外部类型上实现外部trait
高级类型
使用newtype模式实现类型安全与抽象
使用类型别名创建同义类型
永不返回的never类型
动态大小类型和Sized trait
高级函数与闭包
函数指针
返回闭包
宏
宏与函数之间的区别
用于通用元编程的macro_rules!声明宏
基于属性创建代码的过程宏
如何编写一个自定义派生宏
属性宏
函数宏
总结
20 最后的项目:构建多线程Web服务器
构建单线程Web服务器
监听TCP连接
读取请求
仔细观察HTTP请求
编写响应
返回真正的HTML文件
验证请求的合法性并有选择地响应
少许重构
把单线程服务器修改为多线程服务器
模拟一个慢请求
使用线程池改进吞吐量
优雅地停机与清理
为ThreadPool实现Drop trait
通知线程停止监听任务
总结
附录A 关键字
附录B 运算符和符号
附录C 可派生 trait
附录D 有用的开发工具
附录E 阶段性版本
封底
展开 ∨
评论
评分:
1
2
3
4
5
评价:
请输入评论信息
5
0
/255
我要评论
全部评论(0)
默认排序
默认排序
最新排序
相关推荐
Python数据分析、挖掘与可视化从入门到精通
熊熙,张雪莲编著
AIGC时代:游戏美术设计与AI绘画应用从入门到精通
于国辉编著
HTML5+CSS3网页设计与制作基础教程
邱雷编著
C++趣味编程及算法入门
王桂平[等]编著
大数据可视化
张扬,宁阳主编
Linux使用和管理指南:从云原生到可观测性
(奥)迈克尔·豪森布拉斯(Michael Hausenblas)著
32位汇编语言程序设计
钱晓捷主编
编程真好玩:从零开始学网页设计及3D编程
少儿编程网编著
CKA/CKAD应试教程:从Docker到Kubernetes完全攻略
段超飞编著
基于环境的软件近似正确性
马艳芳著
请输入图形验证码
换一换
Loading...