类型必须满足静态生存期

2024-01-14

我正在尝试增加 Rust 和 GTK-RS 应用程序的结构,但我不知道如何处理事件连接。我发现问题出在错误的生命周期中,但我真的不明白如何解决它。

#[derive(Debug)]
struct CreatingProfileUI {
    window: gtk::MessageDialog,
    profile_name_entry: gtk::Entry,
    add_btn: gtk::Button,
    cancel_btn: gtk::Button,
}

#[derive(Debug)]
struct UI {
    window: gtk::Window,

    // Header
    url_entry: gtk::Entry,
    open_btn: gtk::Button,

    // Body
    add_profile_btn: gtk::Button,
    remove_profile_btn: gtk::Button,
    profiles_textview: gtk::TextView,

    // Creating profile
    creating_profile: CreatingProfileUI,

    // Statusbar
    statusbar: gtk::Statusbar,
}

impl UI {
    fn init(&self) {
        self.add_profile_btn
            .connect_clicked(move |_| { &self.creating_profile.window.run(); });
    }
}

我收到此错误:

error[E0477]: the type `[closure@src/main.rs:109:46: 111:6 self:&UI]` does not fulfill the required lifetime
   --> src/main.rs:109:30
    |
109 |         self.add_profile_btn.connect_clicked(move |_| {
    |                              ^^^^^^^^^^^^^^^
    |
    = note: type must satisfy the static lifetime

您不能将非静态引用移至 GTK 回调中。您需要静态的东西或堆分配的东西(例如在Box/RefCell/Rc/etc.).

回调不是从连接到信号的范围调用的,而是在稍后的某个时刻从主循环调用的。要求您传递到闭包中的任何内容仍然有效,这可以是任何东西'static、堆分配或在 main 和主循环运行位置之间的堆栈上分配。最后一部分目前无法用 Rust/GTK-rs 很好地表达。

See gtk-rs 文档底部的示例作为示例 http://gtk-rs.org/tuto/closures。它使用一个Rc<RefCell<_>>.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类型必须满足静态生存期 的相关文章

随机推荐

  • Android 如何在 Android 2.3 及更高版本的 MediaPlayer 中播放shoutcast AAC、AAC+、MP3?

    我正在开发一个 MP3 播放器 我想添加收音机功能 几乎所有关于此问题的 StackOverflow 帖子都是 2010 年的 这对于这个主题来说非常烦人 因为我找不到解决方案 我知道这是商业解决方案 例如 AAC 播放器 解码器等 你能给
  • Todo 任务未出现在 Visual Studio 2012 的任务列表中

    我最近升级到 Visual Studio 2012 除了以 todo 开头的注释不再显示在任务列表中之外 没有任何问题 我完全不知道从哪里开始寻找这个问题的解决方案 因为所有关键字都太笼统了 我遇到了其他类似的问题 答案是包含 todo 注
  • WordPress 所有主题插件 js 文件都添加了这个脚本,我怎样才能删除它

    function var a navigator b document e screen f window g a userAgent h a platform i b cookie j f location hostname k f lo
  • REST GET 忽略参数,PHP Symfony 3 Mpdf

    在 Symfony 3 框架上使用 Mpdf 和 tfox symfony 包 为 PDF 处理器开发 REST API 我创建了两个 GET 请求 一个没有用于测试的参数 另一个带有我想要读取然后转换为 PDF 的参数 HTML 文件的
  • 从 r 中的另一个数据帧查找值

    我有一个名为的大数据框df以及一些身份证件 我有另一个数据框 id list 以及一组匹配的 ID 及其每个 ID 的关联特征 两个数据帧中的 ID 均未按顺序排序 实际上我想从更大的数据框中查找df to the id list并添加两列
  • 获取 C# 方法体内使用的类型

    有没有办法获取 C 方法中使用的所有类型 例如 public int foo string str Bar bar new Bar string x test TEST t bar GetTEST 将返回 条形图 字符串和测试 我现在能得到
  • 在事件中使用 Context/Toast 时出现不需要的重组 - Jetpack Compose

    在 Jetpack Compose 应用程序中 我有两个与此处类似的可组合项 Composable fun Main println Composed Main val context LocalContext current var te
  • 将 Octave 转换为使用 CuBLAS

    我想将 Octave 转换为使用 CuBLAS 进行矩阵乘法 该视频似乎表明这就像输入 28 个字符一样简单 使用 CUDA 库加速应用程序 http youtu be P2Ew4Ljyi6Y t 1m59s 实际上 情况比这更复杂一些 有
  • 无符号和有符号比较

    这是非常简单的代码 include
  • 如何监控Event Dispatch Thread队列?

    我有一个繁重的java项目 它无法响应用户 我发现事件调度线程中需要很长时间的事件会导致我的项目运行缓慢 所以 我有两个问题 如何监视事件调度线程并查看队列中的事件以及最终哪些事件在事件调度线程中花费更多时间 如您所知 invokeLate
  • 为什么我应该在 Perl 中使用 Carp 而不是 warn ?

    人们总是给我举鲤鱼的例子 而不是警告我 为什么 是什么让鲤鱼比警告更好 carp 为您提供有关消息来源的更多信息 上下文 usr bin perl use Carp foo bar baz sub foo warn foo sub bar
  • ios6 和 ios7 之间不同的垂直对齐字体

    我对 iOS6 和 iOS7 之间的垂直对齐字体有一些问题 我有一个自定义字体 在 iOS6 中比垂直对齐的中心高一点 UIButton 那么我做到了吗 我已经设置了myButton titleEdgeInsets UIEdgeInsets
  • Jackson无法反序列化(Spring Cloud Stream Kafka)

    我试图从 kafka 读取 json 消息并收到异常 该异常表示 Jackson 无法将 json 反序列化为 POJO json就像 code 500 count 22 from 1528343820000 to 152834388000
  • 如何让(1 << 9)通过MISRA? [复制]

    这个问题在这里已经有答案了 我们使用 Parasoft 静态分析并打开 MISRA C 2004 检查器 该软件是一个嵌入式系统 我们喜欢这样描述常量 1 define MOTOR ON 1 lt lt 9 这表明寄存器中的第 9 位应该是
  • 在 Laravel 中使用 Eloquent 多态关系对数据进行分类

    在我的应用程序中 我有一个类别表和多个表 包括需要分类的服务和文章 为了方便起见 我想对这些数据使用多态模型 创建类别供服务或文章使用 例如 一旦表被定义为服务表 它就不会显示为可添加文章的可能类别 这也适用于上市 我将有一个文章菜单和一个
  • 将多种日期时间格式转换为一种标准格式

    我正在尝试在 R 中执行一些简单的操作 在加载表后 我遇到了一个组合了多种格式的日期列 Date 1 28 14 6 43 PM 1 29 14 4 10 PM 1 30 14 12 09 PM 1 30 14 12 12 PM 02 03
  • 从 Django JSONField 获取值

    我正在尝试从模型中的 JSONField 检索值 但出现错误 Api 对象没有属性 openapi spec info title class Api models Model Model to hold infomation on the
  • 在 woocommerce 搜索中包含自定义字段值

    我尝试在 woocommerce 中包含自定义字段值search但我有一个问题 在 Google 和 Stack 上 我也看到了带有 pre get posts 的示例 所以我认为这是一个很好的方向 我编写了如下代码 function cu
  • MVC3 Html.DisplayFor -- 是否可以让该控件生成 ID?

    我希望能够显示一些文本 而且还可以通过 jQuery 修改文本 如果我使用 EditorFor 而不是 DisplayFor 我会看到输入控件的 ID 不过 我不希望该值以这种方式可编辑 因此 我将其设为 DisplayFor 但它不会为该
  • 类型必须满足静态生存期

    我正在尝试增加 Rust 和 GTK RS 应用程序的结构 但我不知道如何处理事件连接 我发现问题出在错误的生命周期中 但我真的不明白如何解决它 derive Debug struct CreatingProfileUI window gt