有没有办法通过不可变切片中的可变引用来改变对象?
我有&[&mut Foo]。我可以&mut self在这个切片中调用-method of Foo 吗?
回答
你不能。
不可变引用正式称为“共享”引用:您可以对同一个对象拥有多个共享引用。另一方面,可变引用是独占的,因此不允许对一个对象进行多个可变引用。这些规则旨在帮助避免数据竞争。
一旦对象位于共享引用之后,它就是不可变的。否则,您可以有效地对单个对象有多个可变引用,这会导致数据竞争。
如果您真的想要这样的东西,请查看 module 的文档std::cell。