Использование библиотеки lazy_static
для создания синглтона. Я не могу получить доступ к этому одноэлементному модулю в другом файле. Если модуль определен ниже основной функции, я могу получить к нему доступ.
С учетом основного файла, такого как следующий, test_stuff
может получить доступ к игровым данным штрафа:
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
в другом модуле, если он определен в другом файле?
Чтобы убедиться, что я предоставил минимальный, полный и проверяемый пример, вот мой пример кода на GitHub: https://github.com/camccar/moduleError