- 博客(1188)
- 资源 (17)
- 收藏
- 关注
原创 《通过例子学Rust》第8章 流程控制
任何编程语言都包含的一个必要部分就是改变控制流程:if/else,for 等。让我们谈谈 Rust 语言中的这部分内容。
2026-02-02 22:32:04
315
原创 《通过例子学Rust》第7章 表达式
本章主要介绍表达式,在 Rust 中,语句(Statement)和表达式(Expression)是核心概念,理解它们的区别对编写 Rust 代码至关重要。
2026-02-01 22:02:22
119
原创 《通过例子学Rust》第6章 类型转换
本章介绍类型转换。Rust 使用 trait 解决类型之间的转换问题。最一般的转换会用到 From 和 Into 两个 trait。不过,即便常见的情况也可能会用到特别的 trait,尤其是从 String 转换到别的类型,以及把别的类型转换到 String 时。
2026-01-31 22:45:47
862
原创 《通过例子学Rust》第5章 类型系统
Rust 提供了多种机制,用于改变或定义原生类型和用户定义类型。接下来会讲到:● 原生类型的类型转换(cast)。● 指定字面量的类型。● 使用类型推断(type inference)。● 给类型取别名(alias)。
2026-01-30 22:46:55
893
原创 《通过例子学Rust》第4章 变量绑定
Rust 通过静态类型确保类型安全。变量绑定可以在声明时说明类型,不过在多数情况下,编译器能够从上下文推导出变量的类型,从而大大减少了类型说明的工作。使用 let 绑定操作可以将值(比如字面量)绑定(bind)到变量。
2026-01-29 22:54:39
328
原创 《通过例子学Rust》第3章 自定义类型
本章介绍自定义类型Rust 自定义数据类型主要是通过下面这两个关键字来创建:● struct: 定义一个结构体(structure)● enum: 定义一个枚举类型(enumeration)而常量(constant)可以通过 const 和 static 关键字来创建。
2026-01-28 22:12:34
1011
原创 《通过例子学Rust》第2章 原生类型
本章介绍Rust语言的原生类型,Rust提供了多种原生类型(primitives),包括:标量类型(scalar type)● 有符号整数(signed integers),● 无符号整数(unsigned integers),● 浮点数(floating point),● char(字符),● bool(布尔型),● 单元类型(unit type)。复合类型(compound type)● 数组(array):如 [1, 2, 3]● 元组(tuple):如 (1, true)下面就这些类型进行举例
2026-01-27 22:47:45
942
原创 《通过例子学Rust》第1章 Hello World
本篇是《通过例子学Rust》的第1章,介绍最基本的Rust程序,包括代码注释,格式化打印,打印调试,显示,打印List等。
2026-01-26 22:02:28
969
原创 第22章 附录
附录部分包含一些在你的 Rust 之旅中可能用到的参考资料。 包括:关键字,运行符与符号,可派生的trait,实用开发工具介绍等。
2026-01-25 23:30:18
815
原创 第21章 最后的项目:构建多线程 web server
这是一次漫长的旅途,不过我们已经抵达了本书的结尾。在本章中,我们将一同构建另一个项目,来展示最后几章所学,同时复习更早的章节。作为最后的项目,我们将要实现一个返回 “hello” 的 web server,它在浏览器中看起来就如图 21-1 所示:
2026-01-24 23:19:51
910
原创 第20章 高级特性
本章将学习如下内容:● 不安全 Rust:用于当需要舍弃 Rust 的某些保证并负责手动维持这些保证● 高级 trait:与 trait 相关的关联类型,默认类型参数,完全限定语法(fully qualified syntax),超(父)trait(supertraits)模式 newtype 模式● 高级类型:关于 newtype 模式的更多内容,类型别名,never 类型和动态大小类型● 高级函数和闭包:函数指针和返回闭包● 宏:定义在编译时定义更多代码的方式
2026-01-16 23:41:25
765
原创 第19章 模式与模式匹配
模式(Patterns)是 Rust 中一种特殊的语法,它用来匹配类型的结构,无论类型是简单还是复杂。结合使用模式和 match 表达式以及其他结构可以提供更多对程序控制流的支配权。模式由如下一些内容组合而成:● 字面值● 已解构的数组、枚举、结构体或者元组● 变量● 通配符● 占位符一些模式的例子包括x, (a, 3) 和 Some(Color::Red)。在模式为有效的上下文中,这些部分描述了数据的形状。接着可以用其匹配值来决定程序是否拥有正确的数据来运行特定部分的代码。本章是所有模式相关内容的参考。
2026-01-14 23:39:44
520
原创 第18章 面向对象编程特性
面向对象编程(Object-Oriented Programming,OOP)是一种对程序进行建模的方式。对象(Object)作为一个编程概念来源于 20 世纪 60 年代的 Simula 编程语言。这些对象影响了 Alan Kay 的编程架构,该架构中对象之间互相传递消息。对于 OOP 的定义众说纷纭;在一些定义下,Rust 是面向对象的;在其他定义下,Rust 不是。在本章节中,我们会探索一些被普遍认为是面向对象的特性和这些特性是如何体现在 Rust 语言习惯中的。
2026-01-13 23:17:01
611
原创 第17章 Async和await
本章介绍Async和await,内容包括Futures和async语法,并发与async,Yielding,流(Stream),Pin,Unpin等相关概念及示例。
2026-01-12 23:19:31
559
原创 第16章 无畏并发
安全且高效地处理并发编程是 Rust 的另一个主要目标。并发编程(Concurrent programming),代表程序的不同部分相互独立地执行,而并行编程(parallel programming)代表程序不同部分同时执行,这两个概念随着计算机越来越多的利用多处理器的优势而显得愈发重要。由于历史原因,在此类上下文中编程一直是困难且容易出错的:Rust 希望能改变这一现状。
2026-01-11 23:16:43
564
原创 第15章 智能指针
指针(pointer)是一个包含内存地址的变量的通用概念。这个地址会引用,或者说 “指向”(points at)一些其它数据。Rust 中最常见的指针是第四章介绍的引用(reference)。引用使用 & 符号来表示,而且会借用它们指向的值。它们除了引用数据之外没有任何其他特殊功能,也没有额外开销。另一方面,智能指针(smart pointers)是一类数据结构,它们的表现类似指针,但是也拥有额外的元数据和功能。本章介绍Rust的智能指针。
2026-01-10 23:07:01
558
原创 第14章 进一步认识 Cargo 和 Crates.io
目前为止我们只使用过 Cargo 构建、运行和测试代码这些最基本的功能,不过它还可以做到更多。本章会讨论 Cargo 其他一些更为高级的功能,我们将展示如何:● 使用发布配置(release profiles)来自定义构建● 将库发布到 crates.io● 使用工作空间(workspaces)来组织更大的项目● 从 crates.io 安装二进制文件● 使用自定义的命令来扩展 CargoCargo 的功能不止本章所介绍的,关于其全部功能的详尽解释,请查看文档
2026-01-08 23:00:50
577
原创 第13章 函数式语言特性:迭代器与闭包
Rust 的设计灵感来源于很多现存的语言和技术。其中一个显著的影响就是函数式编程(functional programming)。函数式编程风格通常包含将函数作为参数值或其他函数的返回值、将函数赋值给变量以供之后执行等等。本章我们不会讨论函数式编程是或不是什么的问题,而是展示 Rust 的一些在功能上与其他被认为是函数式语言类似的特性。
2026-01-06 23:09:47
681
原创 第12章 一个 I/O 项目:构建一个命令行程序
本章既是一个目前所学的多项技能的概括,也是一个更多标准库功能的探索。我们将构建一个与文件和命令行输入/输出交互的命令行工具来练习现在一些你已经掌握的 Rust 概念。
2026-01-03 23:03:48
603
原创 第11章 编写自动化测试
Rust 的测试功能提供了一个确保即使你改变了函数的实现方式,也能继续以期望的方式运行的途径。单元测试独立地验证库的不同部分,也能够测试私有函数实现细节。集成测试则检查多个部分是否能结合起来正确地工作,并像其他外部代码那样测试库的公有 API。即使 Rust 的类型系统和所有权规则可以帮助避免某些类型的 bug,不过测试对于减少代码中不符合期望行为的逻辑 bug 仍然是很重要的。
2026-01-02 23:46:42
648
原创 第10章 泛型、Trait 和生命周期
每一个编程语言都有高效处理重复概念的工具。在 Rust 中其工具之一就是 泛型(generics):具体类型或其他属性的抽象替代。我们可以表达泛型的属性,比如它们的行为或如何与其他泛型相关联,而不需要在编写和编译代码时知道它们在这里实际上代表什么。之后,我们讨论如何使用 trait 定义泛型行为的方法。trait 可以与泛型结合来将泛型限制为只接受拥有特定行为的类型,而不是任意类型。最后介绍 生命周期(lifetimes):一类允许我们向编译器提供引用如何相互关联的泛型。
2025-12-29 23:46:20
641
原创 第9章 错误处理
Rust 的错误处理功能被设计为帮助你编写更加健壮的代码。panic! 宏代表一个程序无法处理的状态,并停止执行而不是使用无效或不正确的值继续处理。Rust 类型系统的 Result 枚举代表操作可能会在一种可以恢复的情况下失败。可以使用 Result 来告诉代码调用者他需要处理潜在的成功或失败。在适当的场景使用 panic! 和 Result 将会使你的代码在面对不可避免的错误时显得更加可靠。
2025-12-23 23:29:49
623
原创 第8章 常见集合
Rust 标准库中包含一系列被称为 集合(collections)的非常有用的数据结构。大部分其他数据类型都代表一个特定的值,不过集合可以包含多个值。不同于内建的数组和元组类型,这些集合指向的数据是储存在堆上的,这意味着数据的数量不必在编译时就已知,并且还可以随着程序的运行增长或缩小。每种集合都有着不同功能和开销,而根据当前情况选择合适的集合,这是一项需要逐渐掌握的技能。在这一章里,我们将详细的了解三个在 Rust 程序中被广泛使用的集合:向量(vector),字符串(string),哈希map
2025-12-22 23:17:35
621
原创 第7章 使用包、Crate 和模块管理不断增长的项目
本章介绍Rust项目的代码组织管理,包括:● 包(Packages):Cargo 的一个功能,它允许你构建、测试和分享 crate。● Crates :一个模块的树形结构,它形成了库或可执行文件项目。● 模块(Modules)和 use:允许你控制作用域和路径的私有性。● 路径(path):一个为例如结构体、函数或模块等项命名的方式。讨论它们如何交互,并说明如何使用它们来管理作用域。到最后,你会对模块系统有深入的了解,并且能够像专业人士一样使用作用域!
2025-12-19 23:08:47
652
原创 第6章 枚举和模式匹配
本章介绍枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 变体(variants)来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探索一个特别有用的枚举,叫做 Option,它代表一个值要么是某个值要么什么都不是。然后会讲到在 match 表达式中用模式匹配,针对不同的枚举值编写相应要执行的代码。最后会介绍 if let,另一个简洁方便处理代码中枚举的结构。
2025-12-18 23:25:31
630
原创 第5章 使用结构体组织相关联的数据
结构体(struct),或者 structure,是一个自定义数据类型,允许你包装和命名多个相关的值,从而形成一个有意义的组合。如果你熟悉一门面向对象语言,你会发现一个 struct 就像对象的数据属性。在本章中,我们会比较元组和结构体的异同,在你已有知识的基础上进一步探讨,并演示在何种情况下结构体是组合数据的更好方式。
2025-12-16 23:00:33
605
原创 第4章 认识所有权
所有权(系统)是 Rust 最为与众不同的特性,对语言的其他部分有着深刻含义。它让 Rust 无需垃圾回收(garbage collector)即可保障内存安全,因此理解 Rust 中所有权如何工作是十分重要的。本章,我们将讲到所有权以及相关功能:借用(borrowing)、slice 以及 Rust 如何在内存中布局数据。
2025-12-15 23:14:05
685
原创 第3章 常见编程概念
本章介绍一些几乎所有编程语言都有的概念,以及它们在 Rust 中是如何工作的。很多编程语言的核心概念都是共通的,本章中展示的概念都不是 Rust 所特有的,不过我们会在 Rust 上下文中讨论它们,并解释使用这些概念的惯例。具体来说,我们将会学习变量、基本类型、函数、注释和控制流。每一个 Rust 程序中都会用到这些基础知识,提早学习这些概念会让你在起步时就打下坚实的基础。
2025-12-12 23:13:01
755
原创 第2章 编写一个猜数字游戏
让我们一起动手完成一个项目来快速上手 Rust!本章将介绍一些 Rust 中常见的概念,并通过真实的程序来展示如何运用它们。你将会学到 let、match、方法(methods)、关联函数(associated functions)、外部 crate 等知识!后续章节会深入探讨这些概念的细节。在这一章,我们将主要练习基础内容。
2025-12-11 23:24:46
554
原创 第4部分 附录A 谈一谈网络编程学习经验
本文谈一谈我在学习网络编程方面的一些个人经验。“网络编程”这个术语的范围很广,本文指用Sockets API开发基于TCP/IP的网络应用程序,具体定义见§ A.1.5“网络编程的各种任务角色”。受限于本人的经历和经验,本附录的适应范围是:● x86-64 Linux服务端网络编程,直接或间接使用Sockets API。● 公司内网。不一定是局域网,但总体位于公司防火墙之内,环境可控。
2025-12-08 23:16:28
564
原创 第12章 C++经验谈(2)
我对C++的基本态度是“练从难处练,用从易处用”,因此本章有几节“负面”的内容。我坚信软件开发一定要时刻注意减少不必要的复杂度,一些花团锦簇的招式玩不好反倒会伤到自己。作为应用程序的开发者,对技术的运用要明智,不要为了解决难度系数为10的问题而去强攻难度系数为100的问题,这就本末倒置了。
2025-12-02 23:12:12
995
原创 第12章 C++经验谈(1)
我对C++的基本态度是“练从难处练,用从易处用”,因此本章有几节“负面”的内容。我坚信软件开发一定要时刻注意减少不必要的复杂度,一些花团锦簇的招式玩不好反倒会伤到自己。作为应用程序的开发者,对技术的运用要明智,不要为了解决难度系数为10的问题而去强攻难度系数为100的问题,这就本末倒置了。
2025-12-01 22:47:47
565
原创 第11章 反思 C++ 面向对象与虚函数(3)
C++的面向对象语言设施相比其他现代语言可算得上“简陋”,而且与语言的其他部分(better C、数据抽象、泛型)融合度较差(见电子工业出版社出版的《C++Primer(第4版)(评注版)》第15章)。在C++中进行面向对象编程会遇到其他语言中不存在的问题,其本质原因是C++ class是值语义,而非对象语义。本章主要介绍虚函数存在的问题和替代方法,iostream的用途与局限,值语义与数据抽象。
2025-11-30 23:30:07
837
原创 第11章 反思 C++ 面向对象与虚函数(2)
C++的面向对象语言设施相比其他现代语言可算得上“简陋”,而且与语言的其他部分(better C、数据抽象、泛型)融合度较差(见电子工业出版社出版的《C++Primer(第4版)(评注版)》第15章)。在C++中进行面向对象编程会遇到其他语言中不存在的问题,其本质原因是C++ class是值语义,而非对象语义。本章主要介绍虚函数存在的问题和替代方法,iostream的用途与局限,值语义与数据抽象。
2025-11-28 23:06:19
718
原创 第11章 反思 C++ 面向对象与虚函数(1)
C++的面向对象语言设施相比其他现代语言可算得上“简陋”,而且与语言的其他部分(better C、数据抽象、泛型)融合度较差(见电子工业出版社出版的《C++Primer(第4版)(评注版)》第15章)。在C++中进行面向对象编程会遇到其他语言中不存在的问题,其本质原因是C++ class是值语义,而非对象语义。本章主要介绍虚函数存在的问题和替代方法,iostream的用途与局限,值语义与数据抽象。
2025-11-27 23:38:11
772
原创 第10章 C++编译链接模型精要(2)
C++从C语言继承了一种古老的编译模型,引发了其他语言中根本不存在的一些编译方面的问题(比方说“一次定义原则(ODR))。理解这些问题有助于在实际开发中规避各种古怪的错误。本章主要介绍C语言的编译模型及其成因,C++的编译模型,C++链接(linking),工程项目中头文件的使用规则,工程项目中库文件的组织原则
2025-11-26 23:48:01
644
原创 第10章 C++编译链接模型精要(1)
C++从C语言继承了一种古老的编译模型,引发了其他语言中根本不存在的一些编译方面的问题(比方说“一次定义原则(ODR))。理解这些问题有助于在实际开发中规避各种古怪的错误。本章主要介绍C语言的编译模型及其成因,C++的编译模型,C++链接(linking),工程项目中头文件的使用规则,工程项目中库文件的组织原则
2025-11-21 23:35:41
822
原创 第9章 分布式系统工程实践(2)
本章谈的分布式系统是指运行在公司防火墙以内的信息基础设施(infrastruc-ture),用于对外(客户)提供联机信息服务,不是针对公司员工的办公自动化系统。服务器的硬件平台是多核Intel x86-64处理器、几十GB内存、千兆网互联、常规存储、运行Linux操作系统。系统的规模大约在几十台到几百台,可以位于一个机房,也可以位于全球的多个数据中心。只有两台机器的双机容错(热备)系统不是本章的讨论范围。服务程序是普通的Linux用户进程,进程之间通过TCP/IP通信。
2025-11-15 23:09:08
759
原创 第9章 分布式系统工程实践(1)
本章谈的分布式系统是指运行在公司防火墙以内的信息基础设施(infrastruc-ture),用于对外(客户)提供联机信息服务,不是针对公司员工的办公自动化系统。服务器的硬件平台是多核Intel x86-64处理器、几十GB内存、千兆网互联、常规存储、运行Linux操作系统。系统的规模大约在几十台到几百台,可以位于一个机房,也可以位于全球的多个数据中心。只有两台机器的双机容错(热备)系统不是本章的讨论范围。服务程序是普通的Linux用户进程,进程之间通过TCP/IP通信。
2025-11-14 23:50:07
642
原创 第8章 muduo网络库设计与实现(4)
本章从零开始逐步实现一个类似muduo的基于Reactor模式的C++网络库,大体反映了muduo网络相关部分的开发过程。本章大致分为三段,为了与代码匹配,本章的小节从0开始编号。注意本章呈现的代码与现在muduo的代码略有出入。
2025-11-13 23:27:55
941
computer-vision计算机视图算法opencv相关
2024-03-03
QTreeView+自定义Model实现示例
2022-07-01
VC++ 6.0数据库系统开发实例导航源码
2011-10-23
C++ Qt设计模式第2版(中英文版)+源码
2015-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅