引用类型 | 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)。特别是运行时异常由于隐式传递,运行在线上服务器经常出现令人头疼的问题。
认缴资本制这十年
岁末年初,法律界和社会热议的话题,必然包括2023年新修订的《公司法》(以下简称“新《公司法》”)正式颁布。
强化夯实股东出资义务是本次修订的核心亮点之一。新《公司法》从有限公司注册资本限期认缴制、股份公司注册资本实缴制、股东失权制度、股东出资加速到期制度、设立股东就出资不足的连带责任、未实缴股权转让的责任机制等多个方面入手,进一步落实并完善资本充实原则。