有没有一种方法可以通过不可变切片中的可变引用来改变对象



我有&[&mut Foo]。我可以在这个切片中调用Foo的&mut self-方法吗?

不可以。

不可变引用被正式称为"共享"引用:您可以对同一对象有多个共享引用。另一方面,可变引用是互斥的,因此不允许对一个对象进行多个可变引用。这些规则旨在帮助避免数据竞争。

一旦一个对象位于共享引用后面,它就不可变了。否则,您可以有效地对单个对象进行多个可变引用,这将导致数据竞争。

如果您真的想要这样的东西,请查看模块std::cell的文档。