rust语言基础学习: 使用Default trait为类型提供缺省值 2020年7月21日 继续学习Rust标准库中常用的trait,在开始今天的学习之前,先把前面已经学过的trait做一个简单的复习: std::str::FromStr 用于字符串slice str到其他类型的转换,一个名称为Point的类型实现了FromStr trait后,调用Point::fro…… 阅读全文
rust语言基础学习: 使用From和TryFrom trait进行类型之间的转换 2020年7月20日 昨天学习了Rust中trait的基础知识,今天开始将学习由Rust标准库中提供的经常会用到的trait。 在之前我们已经学习过了FromStr, Deref, DerefMut这3个trait,这里先做一个复习。 1.复习FromStr, Deref, DerefMut trait std::st…… 阅读全文
rust语言基础学习: 使用trait定义接口 2020年7月19日 trait类似于其他编程语言中的常被称为接口(interface)的功能,但还是有一些区别的。 trait告诉Rust编译器某个特定类型拥有可能与其他类型共享的功能。可以通过trait以一种抽象的方式定义共享的行为。可以使用trait boun…… 阅读全文
rust语言基础学习: rust中的错误处理 2020年7月18日 今天开始学习rust中错误处理的内容。 Rust中的错误可分为 可恢复错误(recoverable) 和 不可恢复错误(unrecoverable) 两个类别。 可恢复错误通常代表向用户报告错误和重试操作是合理的情况,例如未找到文件 不可恢复错误会导致程…… 阅读全文
rust语言基础学习: Deref和DerefMut trait 2020年7月17日 前面我们学习了Box<T>, Rc<T>, RefCell<T>三个智能指针。 智能指针只是一种数据结构,它们的表现类似指针,同时有额外的元数据和功能。大多数智能指针拥有其所指向数据的所有权。 Rust中的智能指针通常使用结构体实现,…… 阅读全文
rust语言基础学习: 内存管理复习, 编译时静态检查和运行时动态检查 2020年7月16日 昨天学习了内部可变性模式和智能指针RefCell<T>,RefCell是一个在运行时而不是在编译时执行借用规则检查的类型,如果不满足借用规则将会panic。 今天把最近一段时间学习的内容简单梳理复习一下。 Rust在解决内存管理问题…… 阅读全文
rust语言基础学习:智能指针RefCell<T>与内部可变性模式 2020年7月15日 昨天学习了智能指针Rc<T>,Rc<T>的使用场景是需要一个值有多个所有者的时候,这个场景出现在程序的运行时,Rc<T>是带有引用计数的智能指针,可以绕开编译器对所有权的静态检查。 Rc<T>内…… 阅读全文
rust语言基础学习: 使用智能指针Rc<T>让值可以有多个所有者 2020年7月14日 昨天学习了Rust中的智能指针Box<T>,使用Box可以强制将数据分配在堆上,然后栈上放一个指针指向并拥有这个数据,堆内存中数据的生命周期与栈上指针的生命周期一致。 智能指针Box<T>有三个使用场景:当有大量的数据…… 阅读全文
rust语言基础学习: 使用智能指针Box<T>将数据分配到堆上 2020年7月13日 昨天学习了Rust中智能指针的概念,智能指针是Rust中一种数据结构,它的表现类似指针,同时有额外的元数据和功能。 大多数智能指针拥有其所指向数据的所有权,智能指针被分配到栈上,指向堆上的数据,实现了堆内存受栈内存生命周期控制,这样Rust通…… 阅读全文
rust语言基础学习: 什么是智能指针 2020年7月12日 学习Rust基础最重要的就是理解它的内存管理,前面我们学习了Rust赋值相关的Copy语义, Move语义, Borrow语义(引用和借用), 学习了Rust生命周期等知识。 这些概念都要围绕Rust如何管理内存来理解。本节开始将学习Rust中的智…… 阅读全文