1可变与不可变在Rust中声明一个变量时,要明确变量的可变性。默认是不可变的,如果想要修改这个变量,必须先将其声明为可变类型,否则编译无法通过。如:2共享可变容器但是我们在实际的业务中可能需要更改不可变变量。如何做到这一点?Rust提供了两类容器类型,允许在运行时更改不可变变量,它们是
在Rust中声明一个变量时,要明确变量的可变性。默认是不可变的,如果想要修改这个变量,必须先将其声明为可变类型,否则编译无法通过。如:
但是我们在实际的业务中可能需要更改不可变变量。如何做到这一点? Rust提供了两类容器类型,允许在运行时更改不可变变量,它们是Cell<T> 和 CellRef <T>。我们先来了解下它们到底是什么?
可以看到它们都是由UnsafeCell提供支持的泛型结构体,?Sized代表它容纳的类型大小可以是动态的。UnsafeCell是Rust中唯一
可以把不可变引用转为可变指针的方式。本质是把原始指针*mut 给开发者从而获得内部可变性,而外部可变性是通过mut显式声明的
今天真是非常轻松愉快的一期内容呢。另外,RefCell和Cell容器还有一些其它的方法,感兴趣的朋友可以自行查看。可变共享容器并不难,难的是怎么在实际的业务场景中灵活运用
示例代码Github地址:
https://github.com/shiyivei/from-principle-to-practice/blob/main/src/principle-and-practice/src/type_system/contain_type.rs
另外,可以选择clone本仓库代码,使用cargo doc --open
阅读,体验更佳
git clone git@github.com:shiyivei/from-principle-to-practice.git
cd from-principle-to-practice
cargo doc --open
更多内容欢迎关注公众号拾一维
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!