Cách làm việc với biến môi trường trong Rust

Ở bài viết này, hãy cùng nhau học cách dùng crate dotenv và mô đun std::env để tương tác với các biến môi trường trong Rust, đồng thời, xử lý thông tin nhạy cảm.

Biến môi trường trong Rust

Biến môi trường đóng vai trò quan trọng trong việc cấu hình và tùy biến hành vi của phần mềm hiện đại, cung cấp phương thức linh hoạt để truyền tải thông tin tới ứng dụng mà không cần tới các giá trị mã hóa cứng.

Biến môi trường là những cặp key-value năng động trong một môi trường của hệ điều hành hoặc một file biến môi trường để truy cập trong suốt runtime. Khác giá trị mã hóa cứng, biến môi trường cho độ linh hoạt và thích ứng tốt hơn vì bạn có thể dễ dàng chỉnh sửa chúng.

Hiện có nhiều gói và mô đun để tương tác với biến môi trường trong hệ sinh thái của Rust, bao gồm các crate bên thứ ba dotenv, envyconfig và dùng mô đun có sẵn của Rust.

Crate dotenv là gì?

Crate dotenv là một công cụ đáng giá trong việc quản lý biến môi trường ở dự án Rust. Crate dotenv cung cấp tích hợp đơn giản và các chức năng dễ dùng. Chúng đơn giản hóa quá trình tải & truy cập biến môi trường từ file biến môi trường.

Các tính năng của dotenv crate bao gồm tải biến môi trường liền mạch, phương pháp xử lý lỗi cho các biến bị thiếu, tương tác với mô đun std::env…

Thêm crate dotenv vào các phần phụ thuộc của file Cargo để bắt đầu tương tác với biến môi trường bằng gói này.

[dependencies]
dotenv = "0.15.0"

Chạy lệnh này trong terminal của thư mục dự án để tạo file biến môi trường và chèn một cặp key-value.

echo DATABASE_URL=database.db > .env

Đây là cách bạn có thể tải file môi trường và truy xuất giá trị của một cặp từ file này.

use std::env;
use dotenv::dotenv;

fn main() {

    dotenv().ok(); // Load the .env file

    // Đọc giá trị từ file .env
    let database_url = env::var("DATABASE_URL").expect("You've not set the DATABASE_URL");

    // In giá trị này
    println!("Database URL: {}", database_url);

}

Hàm main tải file .env với hàm ok, đọc giá trị từ file này với hàm evn::var và xử lý các lỗi có thể bằng hàm expect.

Cách dùng biến môi trường trong Rust

Mô dun std::env

Thay vì dùng các gói bên thứ ba, bạn có thể sử dụng mô đun std::env để đọc biến môi trường từ máy.

Đầu tiên, bạn cần nhập mô đun env trong file Rust như sau:

use std::env;

Sau khi nhập mô đun std::env, bạn có thể đọc và viết biến môi trường.

Đây là cách bạn có thể đọc biến môi trường PWD (Present Working Directory) với mô đun std::env.

use std::env;

fn main() {

    // Truy xuất giá trị của biến môi trường "PWD" 
    let variable = env::var("PWD").expect("Error: Working directory environment variable not found");

    // In giá trị kết hợp với key "PWD" 
    println!("Value associated with the PWD key: {}", variable);

}

Hàm main in giá trị này cùng với key PWD sau khi biến này xuất giá trị bằng hàm env::var.

Ngoài ra, bạn có thể dùng std::env của hàm set_var để thiết lập biến môi trường.

use std::env;

fn main() -> Result<(), Box<dyn std::error::Error>> {

    // Đặt biến môi trường "DATABASE_URL" sang "database.db"
    env::set_var("DATABASE_URL", "database.db");

    // Truy xuất giá trị của biến môi trường "DATABASE_URL" 
    let env_variable = env::var("DATABASE_URL");

    // Kiểm tra xemtruy xuất giá trị của biến môi trường đã thành công hay chưa
    if env_variable.is_err() {

        // Nếu không tìm thấy biến môi trường, xuất thông báo lỗi
        println!("Error: DATABASE_URL not found");

    } else {

        // Nếu tìm thấy biến môi trường, in giá trị của nó
        println!("DATABASE_URL set to: {}", env_variable.unwrap());

    }

    Ok(())
}

Hàm main đặt biến môi trường với hàm set_var nhận cặp key-value. Sau khi thiết lập biến môi trường, hàm này in giá trị được liên kết với key.

Kết quả sau khi dùng biến môi trường

Biến môi trường là công cụ hữu ích trong việc xử lý dữ liệu động. Hi vọng bài viết trên giúp bạn hiểu rõ hơn về biến môi trường trong Rust.

Thứ Sáu, 02/06/2023 16:45
51 👨 149
0 Bình luận
Sắp xếp theo