rust无法将singleton从全局空间导入另一个文件中的另一个模块(代码片段)

author author     2022-12-29     770

关键词:

使用lazy_static库创建单例。我无法在另一个文件的模块中访问该单例。如果模块定义在主函数下面,我可以正常访问它。

给定如下的主文件,test_stuff可以访问gamedata:

extern crate gamedata;
#[macro_use]
extern crate lazy_static;


lazy_static! 
    pub static ref GAMEDATA: &'static str = "I am a test STrings";
 

fn main() 
    println!("Game Data:",*GAMEDATA);
    let obj = gamedata::readinginstatic::readinginstatic 
        structure:"working".to_string()
    ;
    obj.print_static();


mod test_stuff 
    use ::GAMEDATA;
    fn printthing() 
        println!("herenow:", *GAMEDATA);
    

使用lib.rs文件,例如:

pub mod readinginstatic;

并在另一个文件readinginstatic.rs中的模块如下所述:

use ::GAMEDATA;

pub struct readinginstatic 
    pub structure:String,


impl readinginstatic 
    pub fn print_static(&self) 
        println!("In Print static width:", *::GAMEDATA);
    

我收到错误:

没有在箱子根部找到

当试图导入GAMEDATA

如果在另一个文件中定义了lazy_static单例,是否可以在另一个模块中访问?

为了确保我提供了一个Minimal,Complete和Verifiable示例,这是我在GitHub上的完整示例代码:https://github.com/camccar/moduleError

答案

::GAMEDATA指的是在GAMEDATA板条箱的根箱中称为gamedata的一些值。但是,你定义的GAMEDATA不在那个箱子里,它在你的main.rs文件中有gamedata作为依赖。

所以你在这里尝试做的就是从箱子里拿出一些东西来取决于你,我不确定,但我不认为这是允许的。

你可以考虑反转这个,而不是在你的gamedata箱子里初始化GAMEDATA,如果你需要在main中使用它你可以正常use

extern crate gamedata;

use gamedata::GAMEDATA;

fn main()
    println!("Game Data:", *GAMEDATA);

    ...

或者,如果GAMEDATA不是您的游戏数据箱应该知道如何定义的东西,您可以在main中构建它并将其传递给gamedata crate中的某个函数作为参数。

无法使用 Sqoop 将数据从 Vertica 导入 Cassandra

】无法使用Sqoop将数据从Vertica导入Cassandra【英文标题】:UnabletoimportdatafromVerticatoCassandrausingSqoop【发布时间】:2014-10-3014:53:49【问题描述】:我正在尝试使用Sqoop将表从Vertica导入DataStaxEnterprise4.5。没有报错也没有异常,但是目标... 查看详情

从函数内将变量插入全局命名空间? [复制]

】从函数内将变量插入全局命名空间?[复制]【英文标题】:Insertvariableintoglobalnamespacefromwithinafunction?[duplicate]【发布时间】:2012-08-0212:56:12【问题描述】:是否可以编写一个将对象插入全局命名空间并将其绑定到变量的函数?例... 查看详情

rust从入门到精通10-所有权

...存放的区域。通常是只读的。②、bss段:存放未初始化的全局变量和静态变量的区域。③、数据段:存放已初始化的全局变量和静态变量的区域。④、函数调用栈(callstacksegment):存 查看详情

如何将数据从一张 Excel 表导入到另一张

】如何将数据从一张Excel表导入到另一张【英文标题】:HowIcanimportdatafromoneexcelsheettoother【发布时间】:2021-12-0214:08:40【问题描述】:在我的excel中,我有主工作表,其中包含我需要的所有数据,但此数据未过滤(大多数行为空)... 查看详情

如何将依赖项(包)从全局系统环境导入(安装)到虚拟环境

】如何将依赖项(包)从全局系统环境导入(安装)到虚拟环境【英文标题】:Howtoimport(install)dependencies(packages)fromaglobalsystemenvironmenttoavirtualenvironment【发布时间】:2022-01-2303:57:14【问题描述】:我在全局系统环境而不是我的虚... 查看详情

将数据库从一台机器导入/导出到另一台机器

】将数据库从一台机器导入/导出到另一台机器【英文标题】:Import/Exportingdatabasesfromonemachinetoanother【发布时间】:2011-01-1807:39:35【问题描述】:我有两台电脑,一台是Ubuntu8.10,另一台是Ubuntu9.10。在Ubuntu8.10上,我在phpmyadmin中有... 查看详情

ios 10+,Swift 3+ - 无法从 Singleton 实例中关闭 UIAlertController

】ios10+,Swift3+-无法从Singleton实例中关闭UIAlertController【英文标题】:ios10+,Swift3+-CannotdismissUIAlertControllerfromSingletoninstance【发布时间】:2017-11-2711:16:25【问题描述】:我创建了一个叠加层,以便在对服务器运行异步数据抓取时运... 查看详情

如何将lodash直接导入javascript中的自定义命名空间

...入lodashcorev4.14.1。但是,只需执行链接就可以将库添加到全局命名空间,即窗口。如何将库直接添加到自定义命名空间,例如window.myns?请注意,我不想将库添加到全局命名空间并在之后引用它。答案使用lodash的_.noCon 查看详情

winform如何全局调用一个外部的类?

...一下单例模式大概是这样的:public sealed class Singleton    private static readonly Singleton instance = new Singleton();    // Explicit static constructor to tell C#&n... 查看详情

从导入模块中的函数访问全局变量

...预期的那样。当我在已导入模块的代码中调用函数时,我无法访问变量。#moduletobeimp 查看详情

如何将数据从一张表导入到另一张表 - SpringBoot JPA /MySQL

】如何将数据从一张表导入到另一张表-SpringBootJPA/MySQL【英文标题】:Howtoimportdatafromonetabletoanother-SpringBootJPA/MySQL【发布时间】:2021-05-2320:26:34【问题描述】:我最近创建了一个车辆管理系统系统来源于springMySQL数据库和服务器端... 查看详情

从 NSKeyedArchiver 加载 Singleton 的状态

】从NSKeyedArchiver加载Singleton的状态【英文标题】:LoadingaSingleton\'sstatefromNSKeyedArchiver【发布时间】:2010-11-1200:59:18【问题描述】:我有一个类,我已将其制成单例,并且能够使用NSKeyedArchiver保存它的状态,但我无法将其状态拉回... 查看详情

无法将位置从一项活动返回到另一项活动

】无法将位置从一项活动返回到另一项活动【英文标题】:Can\'treturnlocationfromoneactivitytoanother【发布时间】:2017-10-0808:43:32【问题描述】:我正在尝试使用AsyncTask从mysql数据库中获取纬度和经度并将其显示在Map上。我创建了一个... 查看详情

无法将数据从地理编码器保存到全局变量 [重复]

】无法将数据从地理编码器保存到全局变量[重复]【英文标题】:Can\'tsavedatafromgeocodertoglobalvariable[duplicate]【发布时间】:2021-10-3011:39:42【问题描述】:我有一个奇怪的问题。我试图从字符串中对地址进行地理编码,它可以工作... 查看详情

将测试从一个单元测试目标导入另一个

...项目。所有这些都是更大工作空间的一部分。问题是我们无法使用当前CI设置运行多个测试目标。我想知道是否可以将我们 查看详情

无法从 VS2012 将窗口布局导入 VS2013

】无法从VS2012将窗口布局导入VS2013【英文标题】:CannotimportwindowlayoutsintoVS2013fromVS2012【发布时间】:2014-03-2614:43:33【问题描述】:我在将窗口布局从VisualStudio2012导入到VisualStudio2013时遇到问题。当我尝试将从VS2012导出的*.vssettings... 查看详情

rust全局变量

参考技术A在实际项目开发中,难免需要用到全局变量,比如全局配置信息,全局内存池等,此类数据结构可能在多处需要被使用,保存为全局变量可以很方便的进行修改与读取。在Rust中,如果只是读取静态变量是比较简单的,... 查看详情

Vue.js 3:无法导入 Vue 全局对象

】Vue.js3:无法导入Vue全局对象【英文标题】:Vue.js3:CannotimportVueglobalobject【发布时间】:2021-02-1513:43:30【问题描述】:试图将Vue3CLI输出调和为适用于所有使用Vue对象的各种教程和插件的东西,如Vue.createApp(...,我快疯了。在我的... 查看详情