Daily Archives: 06/01/2018

Rust – Box

Trong Rust còn có một loại con trỏ khác có tên là con trỏ Box, đây là con trỏ dùng cho kiểu generic T, tức là dùng cho bất kì kiểu dữ liệu nào. Khi dùng con trỏ Box thì dữ liệu sẽ được lưu trên bộ nhớ heap.

Để tạo một biến con trỏ Box thì chúng ta dùng hàm Box::new, ví dụ như sau:

struct Blog {
year: i32,
name: &’static str

fn main() {
let mut a1 = Box::new(Blog {
year: 2017,
name: "phocode.com"
});
println!("{}", a1.year);
}

Trong đoạn code trên chúng ta khai báo biến a1 là một biến con trỏ Box chứa dữ liệu là một biến Blog.

2017

Cơ chế borrowingownership trong con trỏ Box cũng hoàn toàn giống như với con trỏ bình thường.

Ngoài các struct thì Box cũng hỗ trợ các kiểu dữ liệu cơ bản, ví dụ:

fn main() {
let a = Box::new(2017);
let b = Box::new("phocode.com");
let mut c = Box::new("3.14");
*c = 3.14159;
}

Mặc định thì nếu không chỉ định là biến mut thì các biến sẽ không thể thay đổi giá trị được, giống như với các con trỏ bình thường.