我有一个需要改变结构内部数据的特征方法,我希望可以将 setter 方法作为参数传递给特征方法。我想这样做,这样我就可以通过指定作为参数传递的函数来灵活地处理变化的内容。
这段代码是我想要做的事情的简化,它具有相同的编译器问题。
谢谢
代码
struct MyStruct {
i: usize
}
impl MyStruct {
fn set_i(mut self, i: usize) -> Self {
self.i = i;
self
}
fn new() -> Self{
MyStruct{ i: 0 }
}
}
trait MyTrait {
fn do_some_setting(&mut self, setter_function: fn(&mut Self, usize) -> Self ) {
setter_function(&mut self, 7);
}
}
impl MyTrait for MyStruct {}
fn main() {
let mut s = MyStruct::new()
.set_i(3);
assert_eq!(s.i, 3);
s.do_some_setting(MyStruct::set_i);
assert_eq!(s.i, 7);
}
Run Code Online (Sandbox Code Playgroud)
问题
error[E0308]: mismatched …Run Code Online (Sandbox Code Playgroud)