| 引用类型 | Rust | C++ |
|---|---|---|
| 普通引用 | &T | |
| 独享引用 | Box<T> | std::unique_ptr |
| 共享引用(引用计数) | Rc<T> | std::shared_ptr<const T> |
| 共享可变引用 | Rc<RefCell<T>> | std::shared_ptr<T> |
| 多线程共享引用 | Arc<T> | |
| 弱引用 | Weak<T> | std::weak_ptr<T> |
所有权、借用与变量的生命周期
在 Rust 中,所有权(ownership)、借用(borrowing)和生命周期(lifetime)是其内存安全和并发模型的核心概念。它们一起确保了在编译时捕获大部分内存错误,如空指针或悬挂指针。
我们可以通过代码示例和内存模型图来说明这些概念。
Rust错误处理
Rust的错误处理机制和其他语言有很大的不同。
在C++、C#、Java、Javascript、Python等语言中,通常使用throw抛出异常或者返回成功的值。外部调用的地方使用try/catch进行捕获,除了C++没有finally关键字外,C#、Python、Java、Javascript等语言都有基本一致的异常处理逻辑。像Java有三类异常:不可恢复的Error(如OutOfMemoryError、StackOverflowError)、受检异常(如IOException)、运行时异常(如NullPointerException)。特别是运行时异常由于隐式传递,运行在线上服务器经常出现令人头疼的问题。
Rust入门
近十年来,golang、Swift、Kotlin、Typescript等新兴编程语言异军突起。在系统编程领域也出现了Rust和Zig等语言。Rust已经在linux内核接受,linux部分代码已由rust编写;Google在android系统也开始应用rust,还下场写了个Rust教程。
Rust和C/C++等系统语言类似,想学会系统级语言,必须对堆内存和执行栈有充分了解。这个我在Rust类型的内存布局这块讲的很清楚,有个cheats.rs里面的图片也非常直观。
认缴资本制这十年
岁末年初,法律界和社会热议的话题,必然包括2023年新修订的《公司法》(以下简称“新《公司法》”)正式颁布。
强化夯实股东出资义务是本次修订的核心亮点之一。新《公司法》从有限公司注册资本限期认缴制、股份公司注册资本实缴制、股东失权制度、股东出资加速到期制度、设立股东就出资不足的连带责任、未实缴股权转让的责任机制等多个方面入手,进一步落实并完善资本充实原则。