Tôi có một tập hợp các hàm trong mô-đun cần quyền truy cập vào một số trạng thái thời gian khởi tạo được chia sẻ. Hiệu quả Tôi muốn để mô hình này với một vector có thể thay đổi tĩnh như:Phân tích dữ liệu thành biến tĩnh có thể thay đổi mô-đun
static mut defs: Vec<String> = vec![];
fn initialize() {
defs.push("One".to_string());
defs.push("Two".to_string());
}
(Ví dụ: http://is.gd/TyNQVv, không thành công với "tĩnh học có thể thay đổi không được phép có destructors".)
Câu hỏi của tôi cũng tương tự như Is it possible to use global variables in Rust?, nhưng sử dụng Vec
(nghĩa là loại có hàm hủy), vì vậy giải pháp dựa trên Option
cho câu hỏi đó dường như không áp dụng. Cụ thể, điều này không thành công với các lỗi tương tự như nỗ lực đầu tiên của tôi:
static mut defs: Option<Vec<String>> = None;
fn initialize() {
let init_defs = vec![];
init_defs.push("One".to_string());
init_defs.push("Two".to_string());
defs = Some(init_defs);
}
Có cách nào để có được quyền truy cập vào một tĩnh ("toàn cầu") vector được dân cư lúc khởi tạo và có thể nhìn thấy khi chạy?
Có các mẫu khác mà tôi nên cân nhắc để hỗ trợ trường hợp sử dụng này không? Việc chuyển các tham chiếu rõ ràng tới vectơ trạng thái là có thể, nhưng sẽ làm lộn xộn lên một số lượng lớn các chữ ký hàm mà tất cả đều cần truy cập vào trạng thái này.
Cảm ơn! Điều này trả lời cả hai câu hỏi của tôi rất rõ ràng. Tôi đặc biệt thích mẫu struct Context, với các phương thức 'impl''d on. Điều đó cảm thấy thành ngữ hơn. – Bosh