Reference 有没有办法避免结构内部的mut而不是mut引用的重复代码?
以下是我想要实现的目标:Reference 有没有办法避免结构内部的mut而不是mut引用的重复代码?,reference,rust,mutability,Reference,Rust,Mutability,以下是我想要实现的目标: trait Foo { fn readonly(&self) -> i32; fn modify(&mut self, val: i32); } struct FooWrapper<'a> { foo: &'a Foo, } impl<'a> FooWrapper<'a> { fn readonly(&self) -> i32 { self
trait Foo {
fn readonly(&self) -> i32;
fn modify(&mut self, val: i32);
}
struct FooWrapper<'a> {
foo: &'a Foo,
}
impl<'a> FooWrapper<'a> {
fn readonly(&self) -> i32 {
self.foo.readonly()
}
fn modify(&mut self, val: i32) {
self.foo.modify(val);//!!!
}
}
?只需将
foo
作为可变引用即可。然后它可以可变地或不可变地借用
struct FooWrapper<'a> {
foo: &'a mut Foo,
}
现在,您可以将类型参数提供为
&mut Foo
或只是&Foo
,具体取决于您所拥有的内容。只需将Foo
作为可变引用即可。然后它可以可变地或不可变地借用
struct FooWrapper<'a> {
foo: &'a mut Foo,
}
现在,您可以将类型参数提供为
&mut-Foo
或只是&Foo
,具体取决于您所拥有的。“只是将Foo设置为可变引用”我不能,如果我将&Foo
作为输入,如何从中构造&mut-Foo
?请参见func
作为示例。您可能需要包含更多的代码来解释您的问题,并表明它与副本(如果是)不同。“只需将foo设置为可变引用”我不能,如果我将&foo
作为输入,如何从中构造&mut foo
?请参见func
作为示例。您可能需要包含更多代码来解释您的问题,并表明它与重复的代码(如果是)不同。但正如您看到的编译器不允许使用代码一样,您需要包含完整的编译器错误。简单地说发生了错误是不可接受的,但正如您看到的编译器不允许代码一样,您需要包含完整的编译器错误。不能简单地说发生了错误。
trait Foo {
fn readonly(&self) -> i32;
fn modify(&mut self, val: i32);
}
struct FooWrapper<T> {
foo: T,
}
impl <'a> FooWrapper<&'a Foo> {
fn readonly(&self) -> i32 {
self.foo.readonly()
}
}
impl <'a> FooWrapper<&'a mut Foo> {
fn modify(&mut self, val: i32) {
self.foo.modify(val); //
}
}