似乎如果你借用一个struct字段的引用,整个结构被认为是借用的.我设法隔离了我想要做的事情的例子.我只想获得一个字段的"只读"引用B来获取一些数据,然后修改另一个字段B.有没有惯用的Rust方法呢?
struct A {
i: i32,
}
struct B {
j: i32,
a: Box<A>,
}
impl B {
fn get<'a>(&'a mut self) -> &'a A {
&*self.a
}
fn set(&mut self, j: i32) {
self.j = j
}
}
fn foo(a: &A) -> i32 {
a.i + 1
}
fn main() {
let a = Box::new(A { i: 47 });
let mut b = B { a: a, j: 1 };
let a_ref = b.get();
b.set(foo(a_ref)); …Run Code Online (Sandbox Code Playgroud) rust ×1