আমি জানি যে সাধারণভাবে, বৈশ্বিক পরিবর্তনশীলগুলি এড়ানো উচিত। তবুও, আমি ব্যবহারিক অর্থে ভাবি, কখনও কখনও এটি ব্যবহারযোগ্য (এমন পরিস্থিতিতে যেখানে পরিবর্তনশীল প্রোগ্রামের সাথে অবিচ্ছেদ্য হয়) তাদের ব্যবহার করা।
মরিচ শিখতে, আমি বর্তমানে গিটহাবের স্ক্লাইট 3 এবং মরিচা / স্ক্লাইট 3 প্যাকেজ ব্যবহার করে একটি ডাটাবেস পরীক্ষা প্রোগ্রাম লিখছি। ফলস্বরূপ, এটি প্রয়োজনীয় (আমার পরীক্ষা-প্রোগ্রামে) (বৈশ্বিক ভেরিয়েবলের বিকল্প হিসাবে), যেখানে প্রায় এক ডজন রয়েছে তার কার্যকারিতাগুলির মধ্যে ডাটাবেস ভেরিয়েবল পাস করার জন্য। নীচে একটি উদাহরণ।
জাস্টে বৈশ্বিক চলকগুলি ব্যবহার করা কি সম্ভব এবং সম্ভব এবং সম্ভাব্য?
নীচের উদাহরণটি দেওয়া, আমি কী বিশ্বব্যাপী ভেরিয়েবল ঘোষণা করতে এবং ব্যবহার করতে পারি?
extern crate sqlite;
fn main() {
let db: sqlite::Connection = open_database();
if !insert_data(&db, insert_max) {
return;
}
}
আমি নিম্নলিখিতগুলি চেষ্টা করেছিলাম, তবে এটি পুরোপুরি সঠিক বলে মনে হচ্ছে না এবং নীচের ত্রুটিগুলির ফলস্বরূপ (আমি একটি 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 Sql failed : {}\nSql={}", err, sql),
}
}
সংকলনের ফলে প্রাপ্ত ত্রুটিগুলি:
error[E0308]: mismatched types
--> src/main.rs:6:10
|
6 | DB = sqlite::open("test.db").expect("Error opening test.db");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected enum `std::option::Option`, found struct `sqlite::Connection`
|
= note: expected type `std::option::Option<sqlite::Connection>`
found type `sqlite::Connection`
error: no method named `exec` found for type `std::option::Option<sqlite::Connection>` in the current scope
--> src/main.rs:16:14
|
16 | match DB.exec(sql) {
| ^^^^