在闭包内部使用外部变量的副本

时间:2019-07-02 12:36:06

标签: rust closures lifetime

我试图将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);
    ...
    });

我假设我可以在闭包内部直接使用widthheight,因为它们是默认复制的原始类型。但是编译器抱怨:

   |     drawing_area.connect_draw(|_, cr| {
   |                               ^^^^^^^ may outlive borrowed value `width`

我在Rust文档中找不到解决此问题的好方法,在闭包内部使用外部变量的最佳方法是什么?

我无法更改闭包的签名,因为connect_draw恰好需要两个输入参数。

0 个答案:

没有答案