我的目标是制作一个独立于基础数据结构的功能(特别是泛洪)。我试图通过传递两个闭包来做到这一点:一个用于查询,它不变地借用一些数据,另一个用于变异,它可变地借用相同的数据。
示例(在Rust Playground上测试):
#![feature(nll)]
fn foo<F, G>(n: i32, closure: &F, mut_closure: &mut G)
where
F: Fn(i32) -> bool,
G: FnMut(i32) -> (),
{
if closure(n) {
mut_closure(n);
}
}
fn main() {
let mut data = 0;
let closure = |n| data == n;
let mut mut_closure = |n| {
data += n;
};
foo(0, &closure, &mut mut_closure);
}
Run Code Online (Sandbox Code Playgroud)
错误:(调试,每晚)
#![feature(nll)]
fn foo<F, G>(n: i32, closure: &F, mut_closure: &mut G)
where
F: Fn(i32) -> bool,
G: FnMut(i32) -> …Run Code Online (Sandbox Code Playgroud)