Rust程序设计[13]

Rust 闭包

Rust 闭包 对整型向量进行排序很容易: integers.sort(); 遗憾的是,当我们想对一些数据进行排序时,它们几乎从来都不是整型向量。例如,对某种记录型数据来说,内置的 sort 方法一般不适用: struct City { name: String, populati

Rust 实用工具特型

Rust 实用工具特型 Rust 实用工具特型可分为三大类。 语言扩展特型 标记特型 公共词汇特型 Drop 当一个值的拥有者消失时,Rust 会丢弃(drop)该值。 struct Car { money: i32, } impl std::ops::Add for Car {

Rust 运算符重载

Rust 运算符重载 使用 Rust 的 + 运算符和 * 运算符,可以像对任何内置数值类型一样对 Complex 进行加法运算和乘法运算. z = z * z + c; 你可以让自己的类型支持算术运算符和其他运算符,只要实现一些内置特型即可。这叫作运算符重载,其效果跟 C++、C#、Python

Rust 特型与泛型

Rust 特型与泛型 Vec<T> 是泛型的:你可以创建任意类型值的向量,包括在你的程序中定义的连 Vec 的作者都不曾设想的类型。 许多类型有 .write() 方法,包括 File 和 TcpStream。你的代码可以通过引用来获取任意写入器,并向它发送数据。你的代码不必关心写入器的类型。以后,

Rust 枚举与模式

Rust 枚举与模式 枚举 例子 1 pub enum Car { Benz, Ferrari, } fn get_car(car: Car) -> Engine<String> { match car { Car::Benz => Engine::new(

Rust 结构体

Rust 结构体 Rust 有 3 种结构体类型:具名字段型结构体、元组型结构体和单元型结构体。 具名字段型结构体 /// 由8位灰度像素组成的矩形 struct GrayscaleMap { pixels: Vec<u8>, size: (usize, usize) } Rust

Rust crate 与 模块

crate Rust 程序由 crate(板条箱)组成。每个 crate 都是既完整又内聚的单元,包括单个库或可执行程序的所有源代码,以及任何相关的测试、示例、工具、配置和其他杂项。 版本 在 Cargo.toml [package] 部分中修改 edition 表示自己用的是什么版本的 Rust

Rust 错误处理

错误处理 Rust 中的两类错误处理:panic 和 Result. 普通错误使用 Result 类型来处理。Result 通常用以表示由程序外部的事物引发的错误,比如错误的输入、网络中断或权限问题。这些问题并不是意料之中的,在没有任何 bug 的程序中也可能会不时出现。 panic 针对的是另一种

Rust 表达式

表达式语言 Rust 是所谓的表达式语言。这意味着它遵循更古老的传统,可以追溯到 Lisp^[1]^,在 Lisp^[1]^ 中,表达式能完成所有工作。 在 C 中,if 和 switch 是语句,它们不生成值,也不能在表达式中间使用。而在 Rust 中,if 和 match 可以生成值。 例子 1

Rust 引用

Rust Rust 还有一种名为引用(reference)的非拥有型指针,这种指针对引用目标的生命周期毫无影响。 引用的生命周期绝不能超出其引用目标。你的代码必须遵循这样的规则,即任何引用的生命周期都不可能超出它指向的值。为了强调这一点,Rust 把创建对某个值的引用的操作称为借用(borrow)那