rust学习曲线之所以难,在于他的设计思想上的差异。本文主要从内存管理和抛弃继承拥抱组合来讲述。内存管理内存管理以前主要有两种方式,手动管理(C,C++),自动管理(JAVA,Python)。rust开辟了新的一条道,引入所有权概念,但不引入单独的垃圾回收器,内存用完就释放。因此基于这点,引入了
rust学习曲线之所以难,在于他的设计思想上的差异。本文主要从内存管理和抛弃继承拥抱组合来讲述。
内存管理以前主要有两种方式,手动管理(C,C++),自动管理(JAVA,Python)。rust开辟了新的一条道,引入所有权概念,但不引入单独的垃圾回收器,内存用完就释放。因此基于这点,引入了很多的概念,核心是所有权和生命周期。另外是借用,可变借用,不可变借用,Rc(Refernce counting)引用计数器,Box、Arc、Cell、RefCell、Cow,这几个概念可以参考 https://blog.csdn.net/hbuxiaofei/article/details/113814516
这些概念的引入其核心就是在解决内存管理问题,我理解为半自动化的内存管理:通过代码约束来达到内存自动管理。
继承的优点和缺点可以网上搜索一下,项目初期OOP思想很重要,可以快速建模实现需求,但随着工程的深入迭代和版本优化,继承的代码维护和增加新功能变得更加复杂 ,牵一发,动全身,JAVA被Oracle收购后,搞出来接口默认方法,其实就是在解决这个问题:我也不想维护以前的代码了,新搞吧。
rust引入组合概念,不在叫class,叫trait:特性,可以为结构体(struct)、枚举(enum)或基本类型直接实现trait。这一点在以前的概念上需要转化过来,不要以面向对象的思想,也不要以面向过程的思想去看待rust,要变更为组合的思想看待rust,要牢记否则用起来会很不顺畅。
我认为以上两点是其他语言工程师使用rust需要注意的,当然这是我个人的观点,有不正确的地方,欢迎指正。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!