相关疑难解决方法(0)

是否可以在Rust中使用全局变量?

我知道一般来说,应避免使用全局变量.尽管如此,我认为在实际意义上,有时需要(在变量是程序不可或缺的情况下)使用它们.

为了学习Rust,我目前正在使用sqlite3和GitHub上的Rust/sqlite3包编写数据库测试程序.因此,这需要(在我的测试程序中)(作为全局变量的替代),在大约有十几个函数之间传递数据库变量.一个例子如下.

  1. 在Rust中使用全局变量是否可行,可行和可取?

  2. 鉴于以下示例,我可以声明并使用全局变量吗?

extern crate sqlite;

fn main() {
    let db: sqlite::Connection = open_database();

    if !insert_data(&db, insert_max) {
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,但它看起来不太正确并导致下面的错误(我也尝试了一个unsafe块):

extern crate sqlite;

static mut DB: Option<sqlite::Connection> = None;

fn main() {
    DB = sqlite::open("test.db").expect("Error opening test.db");
    println!("Database Opened OK");

    create_table();
    println!("Completed");
}

// Create Table
fn create_table() {
    let sql = "CREATE TABLE IF NOT EXISTS TEMP2 (ikey INTEGER PRIMARY KEY NOT NULL)";
    match DB.exec(sql) {
        Ok(_) => println!("Table created"),
        Err(err) => println!("Exec of …
Run Code Online (Sandbox Code Playgroud)

global-variables rust

78
推荐指数
7
解决办法
6万
查看次数

标签 统计

global-variables ×1

rust ×1