孤儿规则 实现traits 你不能对另外的crate里面的类型定义新的方法,比如: impl u32 { fn is_even(&self) -> bool { self % 2 == 0 } } 编译器会报错 error[E0390]: cannot
Traits 重新看之前的Ticket结构体 pub struct Ticket { title: String, description: String, status: String, } 之前我们所有的assertions(测试)都使用的是Ticket的字段。 ass
Destructors(析构函数) 既然使用了堆,那么我们应该对这一块内存负责。C/C++中,我们需要手动调用free函数,清理不再使用的内存空间。Java,C#等语言,提供了GC来帮我们管理内存,但是会有性能损失。同样的,Rust的语言特性决定了他也要像C/C++那样,手动管理内存,这在编译时就要
可变引用 在上一节的习题中,我们完成了这样的代码 impl Ticket { pub fn title(&self) -> &String { &self.title } pub fn description(&self
Ownership System(所有权系统) 所有权系统是Rust语言最基础,最独特,最重要的机制,它让Rust无需GC(Garbage Collection 垃圾回收机制)就可以保障内存安全和运行效率。 所有权系统包括所有权(Ownership)、借用(Borrowing)、生命周期(Lifet
Encapsulation(封装) 封装 既然我们已经对模块和可见性有了基本的了解,那么让我们回到封装上来。 封装是隐藏对象内部表示的做法。它最常用于强制实施对象状态的一些不变性(invariants)。 让我们回顾Ticket结构体 struct Ticket { title: Strin
我真的不想参加数学建模竞赛了,刚开始组队的时候被学姐叫着去的,后来因为大一不能参加这个竞赛,被无情的驱逐出了队伍。 后来QQ群,有人找组队,我当时真是闲的,就直接去组队了...... 本来以为应该会很顺利的,和队友沟通也挺好,但是暑假不知道他们都干嘛去了,我是去广东了,想好好搞一搞408和英语,
Visibility(可见性) 当你开始将代码分解成多个模块时,就需要开始考虑可见性问题。可见性决定了你的代码(或其他人的代码)中哪些区域可以访问给定的实体,无论是结构体、函数还是字段等。 默认私有 在 Rust 中,默认情况下一切都是私有的。 一个私有实体只能被访问于: 定义它的同一模块 其中一
Modules(模块) 上一节,我们在new函数中单独写明对字符串的格式约束,但是存在一个问题。 pub fn new(title: String, description: String, status: String) -> Self { if status!="To-D
String(字符串) 字符串的本质就是一种特殊的容器类型,在程序开发过程中,常被作为一个整体来处理,不同于其它语言的字符串,Rust官方库的String字符串会显得很复杂,不过没关系,再复杂也得一点一点学会 字符串的创建 现在我们学习两种字符串,一种是字符串字面量,另一种是可变长度的字符串对象 1