我试图将Rust与Cairo结合使用,但遇到一个问题,我找不到适合的解决方案:
let (width, height) = (400., 300.);
let window = gtk::ApplicationWindow::new(application);
window.set_default_size(width as i32, height as i32);
let drawing_area = Box::new(DrawingArea::new)();
drawing_area.connect_draw(|_, cr| {
cr.scale(width, height);
...
});
我假设我可以在闭包内部直接使用width
和height
,因为它们是默认复制的原始类型。但是编译器抱怨:
| drawing_area.connect_draw(|_, cr| {
| ^^^^^^^ may outlive borrowed value `width`
我在Rust文档中找不到解决此问题的好方法,在闭包内部使用外部变量的最佳方法是什么?
我无法更改闭包的签名,因为connect_draw
恰好需要两个输入参数。