rust 如何在gtk-rs应用程序中实现全局信息共享

blmhpbnm  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(195)

我试图用gtk-rs在Rust中构建一个应用程序。当用户创建一个新项目时,需要以某种方式存储项目根目录的路径,以便所有应用程序都可以访问它。我试图解决这个问题:

  • 创建一个可变的静态字符串(不安全,因此可能不是可行的解决方案)
  • 将变量存储到一个文件中,由于显而易见的原因,这个文件既慢又愚蠢。
  • 按照This帖子中的建议使用lazy_static!。但它也说这一般不是首选的方式。所以我尝试了下一件事。
  • 创建一个mut project_root: &mut String并将其传递给任何需要它的函数。现在的问题是,当我需要调用new_proj_menu_item.connect_activate(move |_| new_project_listener::add_listener(&file_tree_view, project_root));来设置菜单项的侦听器时,编译器告诉我:“project_root具有匿名生存期'_,但它需要满足'static生存期要求E0759...在此处捕获...注意:...并且需要在这里生存'static”我不完全理解,但似乎与我尝试的第一件事有关(project_root是字符串)。

现在我的问题是:我该如何存储这样的变量,以便从整个项目中访问它?是否有我不知道的GTK内部方法?

yi0zb3m4

yi0zb3m41#

我不知道为什么把变量存储到文件中会很慢很愚蠢。据我所知,这是标准的,你通常每分钟访问一次文件。如果你指的是线程或函数之间的通信,你绝对应该重新设计应用程序。使用mpsc。

相关问题