use qsingleton::singleton;
#[singleton]
#[derive(Debug)]
struct Config {
name: String,
version: String,
}
#[singleton(arc)]
#[derive(Debug)]
struct Database {
connection_string: String,
pool_size: usize,
}
fn main() {
Config::init(Config {
name: "MyApp".to_string(),
version: "1.0.0".to_string(),
});
Database::init(Database {
connection_string: "postgresql://localhost/mydb".to_string(),
pool_size: 10,
});
let config = Config::global();
println!("App: {} v{}", config.name, config.version);
let db = Database::global();
println!("DB: {} (pool size: {})", db.connection_string, db.pool_size);
let db_clone = Database::global();
std::thread::spawn(move || {
println!("In thread: {}", db_clone.connection_string);
})
.join()
.unwrap();
}