/ / Tìm hiểu Vay nợ bằng Rust

Tìm hiểu Vay nợ bằng Rust

Rust sử dụng trình kiểm tra mượn để thực thi các quy tắc sở hữu của nó và đảm bảo rằng các chương trình được an toàn trong bộ nhớ. Các quy tắc quyền sở hữu quyết định cách Rust quản lý bộ nhớ qua ngăn xếp và đống.

Khi bạn viết các chương trình Rust, bạn sẽ cần sử dụng các biến mà không thay đổi quyền sở hữu của giá trị được liên kết. Rust cung cấp một cơ chế vay mượn mạnh mẽ để khuyến khích sự linh hoạt và tái sử dụng mã.


Vay trong Rust là gì?

Việc vay mượn là truy cập giá trị của một biến mà không có quyền sở hữu biến đó bằng cách tham chiếu đến chủ sở hữu. Trình kiểm tra mượn đảm bảo rằng tham chiếu là hợp lệ và dữ liệu không bị loại bỏ khi sử dụng một cấu trúc được gọi là vòng đời.

Thời gian tồn tại là thời gian tồn tại của một biến. Vòng đời bắt đầu khi tạo biến và kết thúc khi phá hủy biến. Bạn có thể mượn quyền sở hữu của một biến và khi tham chiếu được mượn nằm ngoài phạm vi, quyền sở hữu sẽ trả về cho biến chủ sở hữu. Vay mượn hơi giống như các con trỏ bạn sẽ tìm thấy trong các ngôn ngữ như C ++ và Go. Nhưng trình biên dịch Rust sử dụng trình kiểm tra mượn để đảm bảo các chương trình được an toàn trong bộ nhớ.


Một ví dụ về vay trong rỉ sét

Bạn có thể mượn quyền sở hữu của một biến bằng cách tham chiếu đến chủ sở hữu bằng cách sử dụng ký hiệu và (&).

fn main() {
let x = String::from("hello");
let y = &x;
println!("{}", x);
println!("{}", y)
}

Nếu không vay bằng cách tham khảo, chương trình sẽ hoảng loạn. Nó sẽ vi phạm quy tắc sở hữu rằng một giá trị có thể có một chủ sở hữu và hai biến không thể trỏ đến cùng một vị trí bộ nhớ. Vay mượn có thể rất hữu ích trong các chức năng. Đây là một ví dụ về việc mượn trong một hàm, để giữ quyền sở hữu trong khi gọi các hàm khác có các biến cục bộ làm đối số.

fn print_even(vectr: &Vec<i32>) {
for values in vectr {
if values % 2 == 0 {
println!("{}", values);
}
}
}

Các print_even hàm tham chiếu đến một vectơ gồm các số nguyên 32 bit làm đối số của nó. Sau đó, nó in ra các dòng giá trị là bội số của hai trong vector bằng cách sử dụng vòng lặp for và println! vĩ mô.

fn main() {
let number_vector = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
print_even(&number_vector);
println!("The main function retains ownership of the number vector{:?}", number_vector)
}

Hàm main khai báo biến number_vector và gán một vectơ gồm các số nguyên 32 bit cho nó. Sau đó, nó gọi hàm print_even và chuyển nó một tham chiếu đến number_vector biến bằng cách sử dụng ký hiệu và.

Chức năng chính giữ lại quyền sở hữu của number_vector biến nó có thể tiếp tục sử dụng giá trị tại vị trí bộ nhớ của nó.


Tham chiếu vay mượn và thay đổi

Các hàm cũng có thể sửa đổi các biến đã mượn bằng cách sử dụng các tham chiếu có thể thay đổi đến chúng, trước khi trả lại quyền sở hữu.

Tuy nhiên, không giống như các biến thông thường có thể được đặt thành có thể thay đổi bằng cách sử dụng từ khóa mut, bạn phải đặt tiền tố cho các tham chiếu có thể thay đổi bằng ký hiệu và.

Trước khi tạo các tham chiếu có thể thay đổi, biến mà bạn muốn sửa đổi phải có thể thay đổi được.

fn remove_value(vectr: &mut Vec<i32>) -> &Vec<i32> {
vectr.remove(4);
return vectr
}

Các remove_value hàm nhận tham chiếu đến một vectơ có thể thay đổi của các số nguyên 32 bit. Nó trả về một vectơ gồm các số nguyên 32 bit sau khi loại bỏ giá trị của vectơ trong chỉ mục thứ tư.

fn main() {
let mut nums = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
remove_value(&mut nums);
println!("{:?}", nums);
}

Hàm sửa đổi nums vectơ bằng cách gọi remove_value và chuyển tham chiếu có thể thay đổi của một vectơ làm đối số. Khi in vectơ, chỉ mục thứ tư trước đó của vectơ không tồn tại.

Lưu ý rằng đối số là một tham chiếu đến một vectơ có thể thay đổi.

Điều quan trọng là phải hiểu quyền sở hữu và vay nợ

Bạn sẽ cần hiểu quyền sở hữu và việc vay mượn để viết mã Rust hiệu quả, an toàn với bộ nhớ để biên dịch và chạy. Nếu mã của bạn không tuân theo các quy tắc sở hữu, người kiểm tra khoản vay sẽ phát hiện ra nó. Bạn sẽ cần làm cho chương trình của mình an toàn với bộ nhớ để Rust biên dịch nó.

Công cụ kiểm tra khoản vay rất khó chịu khi bạn mới làm quen với Rust. Tuy nhiên, khi bạn viết nhiều mã Rust hơn, bạn sẽ quen với nó và có được kinh nghiệm về cách viết mã Rust an toàn cho bộ nhớ.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *