这是一个生 rust 函数。
impl Room {
pub fn getPageContent(&mut self, bookNumber: u32, pageNumber: u16, alp: &Alphabet) {
let page = &mut self.books[(bookNumber-1) as usize].pages[(pageNumber-1) as usize];
if page.text.is_empty() {
page.generateContent(alp, bookNumber, &self);
}
}
}
每个页面都需要从到房间的信息来生成它的内容。然而,如函数所示,这样做当然会导致
cannot borrow `self` as immutable because it is also borrowed as mutable´
我的问题是:在这种情况下,设计模式应该是什么样的?2特别是在规模上,因为这只是一个例子。
如果所有这些信息都实现了克隆,那么从房间中为页面提供所需的每个信息将是一个解决方案,但似乎并不可取(如果“generateContent”需要10个不同的信息呢?这种模式将迅速增加要完成的工作,沿着潜在的错误和整体复杂性)。
另一种解决方案是直接在"getPageContent“中生成内容,但这种模式会很快导致 * 所有事情 * 都在Room中完成,这在大规模应用时似乎也不是一个好主意。
1条答案
按热度按时间5vf7fwbs1#
您可以从
generateContent
中取出突变,然后更改generateContent
以获取非mut参考。