小编Shc*_*ova的帖子

如何将可变状态移动到闭包中?

闭包在其状态中有一些数据,但我如何使其变为可变?例如,我想要一个计数器闭包,每次都返回递增的值,但它不起作用.我如何使其工作?

fn counter() -> Box<Fn() -> i32> {
    let mut c: i32 = 0;
    Box::new(move || {
        c += 1;
        c
    })
}

fn main() {
    let mut a = counter();
    let mut b = counter();
    println!("{:?}", [a(), a(), a(), b(), b(), a()]);
}
Run Code Online (Sandbox Code Playgroud)

错误(和警告)我得到:

error: cannot assign to captured outer variable in an `Fn` closure
        c += 1;
        ^~~~~~
help: consider changing this closure to take self by mutable reference
    Box::new(move || {
        c += 1;
        c
    })
Run Code Online (Sandbox Code Playgroud)

我希望它输出类似的东西 …

rust

7
推荐指数
1
解决办法
3554
查看次数

同时支持 GCController 和 IOHIDDeviceRef

我正在开发支持游戏控制器的 OS X 应用程序。它必须支持源自 IOKit HID 和 GameController.framework 的控制器。我面临的问题是大多数 MFi GameController.framework 兼容控制器也是隐藏设备。因此,MFi 控制器在控制器列表中出现了两次,分别是 GCController 和 IOHIDDevice。有没有办法在它们之间建立连接,忽略 HID 设备?

GCController 对象拥有私有属性deviceRef,指向底层 hid 设备,使得在 HID 层识别和忽略设备成为可能。问题是这deviceRef是一个私有财产,所以我不能在 App Store 应用程序中使用它。

理想的解决方案是识别 IOHIDDeviceRef 是 MFi 设备的一种方法,因此我可以在我的 HID 层中完全跳过它。

macos iokit hid mfi gamecontroller

2
推荐指数
1
解决办法
1115
查看次数

标签 统计

gamecontroller ×1

hid ×1

iokit ×1

macos ×1

mfi ×1

rust ×1