QuânSysAd's Blog: rust
Hiển thị các bài đăng có nhãn rust. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn rust. Hiển thị tất cả bài đăng

14 tháng 10 2019

Một hàm trong Rust ưa thích của tôi

Một hàm trong Rust ưa thích của tôi
Một hàm trong rust mà tôi ưa thích là std::mem::drop nó được sử dụng để giải phóng hoặc thu hồi cấp phát giá trị, tương tự như hàm free() trong C.
Ghi lại trích dẫn tài liệu từ stdlib, hàm này không phải là ma thuật, nó thực sự được định nghĩa như sau
pub fn drop(_x: T) { }
Làm sao định nghĩa hàm với thân hàm trống rỗng lại có thể hữu ích ?
Ownership và lifetimes là các tính năng duy nhất của Rust, vì nó cho bạn khả năng dự đoán trước, và cho bạn cả hiệu năng của quản lý bộ nhớ tĩnh mà không có vấn đề gì với sự an toàn của nó.
Luật lệ của ownership khá đơn giản
  • Từng giá trị trong Rust có biến được gọi là owner của nó.
  • Sẽ chỉ có duy nhất một owner ở một thời điểm.
  • Khi owner vượt phạm vi, giá trị sẽ bị dropped.
  • Gọi hàm sẽ chuyển ownership của arguments và nếu hàm được gọi quyết định không làm gì với nó (argument), thì argument sẽ bị dropped - đó chính xác là điều chúng ta muốn!.
Hiện nay điều này dường như là một thủ thuật, nhưng thực sự không phải vậy. Hầu hết các ngôn ngữ sẽ hỏi lập trình viên gọi free() một cách rõ ràng hoặc ngầm gọi một hàm runtime.deallocate() trong tính năng garbage collector phức tạp của ngôn ngữ.
Vẻ đẹp của việc thiết kế ngôn ngữ không phải là như xây dựng một tòa nhà rất phức tạp như Scala hoặc tạo ra một ngôn ngữ khiếm khuyết và không thể chấp nhận như Go - mà cho phép lập trình viên khả năng biểu diễn các ý tưởng phức tạp một cách tao nhã và an toàn. Rust thực sự tỏa sáng trong khía cạnh đó.
“Một ngôn ngữ mà không ảnh hưởng tới cách bạn nghĩ về việc lập trình thì không đáng để tìm hiểu” - Alan J. Perlis
Credit: