The Rust Programming Language:Enums and Pattern Matching
Defining an Enum定义一个枚举: Enum Values可以这样使用枚举值: 这里我们只保存了IP 的类型,没有保存具体的 IP 地址。我们可以用刚学的结构体来实现: 但实际上,我们可以直接把数据存储到每个枚举值当中: 这里可以看到,对于每个枚举值而言,我们相当于也自动...
The Rust Programming Language:Using Structs to Structure Related Data
Defining and Instantiating Structs结构体与元组相似,正如在 “元组类型” 一节中讨论的那样,二者均可保存多个相关的值。与元组一样,结构体的各个部分可以是不同类型的。与元组不同的是,在结构体中你会为每一块数据命名,以清楚地表示这些值的含义。添加这些名称意味着结构体比元组更加灵活:你...
The Rust Programming Language:Understanding Ownership
所有权(Ownership)是Rust最独特的特性,它使Rust能够在不需要垃圾收集器的情况下保证内存安全,因此理解所有权是很重要的。在本章中,我们将会讨论所有权以及相关的几个特性:借用(borrowing),切片(slices),以及Rust如何在内存中分布数据。 What Is Ownership?所有权是一...
The Rust Programming Language:Common Programming Concepts
本章将讲述编程语言中的几乎所有基本概念,并描述它们在Rust中的工作方式。 Variables and Mutability正如之前的章节所说的那样,在Rust中,变量默认是不可变的。这是Rust推荐的一种做法,旨在让你以一种利用Rust提供的安全性和简便开发性的方式编写代码。当一个变量是不可变的,并且绑定了一个...
The Rust Programming Language:Programming a Guessing Game
在本章中,我们将会从零开始实现一个经典的入门级程序——猜数字小游戏,目的是在编写的过程中快速熟悉Rust中的各个概念。这个小游戏的主要规则为:随机生成一个1到100的数字,然后提示玩家进行猜测,当玩家输入一个数字后,需要提醒玩家做出的猜测太大了或者是太小了,直到正确地猜到目标数。 Setting Up a New...
现代C++32讲:易用性改造 II - 字面量、静态断言和成员函数说明符
字面量C++11引入了自定义字面量,可以使用operator""后缀,来将用户提供的字面量转换为实际的类型。 示例: 这里为了方便,直接导入了 std 命名空间,但正常情况其实应该在字面量的作用域里导入需要的命名空间。 要在自己的类里面支持字面量,唯一的限制是非标准的字面量后缀必须以下...
自动类型推断autoauto并没有改变 C++是静态类型语言这一事实,使用 auto 的变量或函数返回值的类型仍然是编译时就确定了,只不过编译器能自动填充。不使用自动类型推断时,如果容器类型未知的话,我们还需要加上typename,用于显式告诉编译器这是一个类型,而不是静态变量之类的(注意此处 const 引用还...
什么是迭代器?迭代器是一个很通用的概念,并不是一个特定的类型。它实际上是一组对类型的要求。对容器的begin和end成员函数返回的对象类型提出以下要求,假设前者返回的类型是 I,后者返回的类型是 S,那么这些要求是: I 对象支持*操作,解引用取得容器内的某个对象 I 对象支持++指向下一个对象,同时支持前置和...
如果你不知道到底该不该用异常的话,那答案就是该用。如果你需要避免使用异常,原因必须是你有明确的需要避免使用异常的理由。 没有异常的世界先来看看没有异常的世界是什么样子的,最典型的情况就是 C 了。假设我们要做一些矩阵的操作,定义了下面这个矩阵的数据结构: 初始化和清理的函数: 假设我们需要做矩阵乘法,...
函数对象及其特化首先来讨论一下两个重要的函数对象,less和hash。先看一下less,小于关系。在标准库里,通用的less大致是这样定义的: less是一个函数对象,并且是一个二元函数,执行对任意类型的值的比较,返回布尔类型。作为函数对象,它定义了函数调用运算符(operator()),并且缺省行为是对指...
Page 2 / 8