小编Til*_*ded的帖子

不能在同一范围内的两个不同的闭包中可变地借入

我的目标是制作一个独立于基础数据结构的功能(特别是泛洪)。我试图通过传递两个闭包来做到这一点:一个用于查询,它不变地借用一些数据,另一个用于变异,它可变地借用相同的数据。

示例(在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)

closures rust borrow-checker

4
推荐指数
1
解决办法
364
查看次数

标签 统计

borrow-checker ×1

closures ×1

rust ×1