Gần đây, phiên bản ổn định của Rust 1.88.0 đã được phát hành, mang đến một số cập nhật rất thiết thực.
Trước khi đi sâu vào các tính năng mới, hãy nói về cách nâng cấp. Mở ServBay, tìm Rust trong mục "Packages" (Gói) và nhấp vào nút nâng cấp màu cam. Điều này giúp bạn tiết kiệm công sức gõ lệnh và xử lý các vấn đề về môi trường. Nếu bạn muốn đơn giản hóa quá trình này, bạn có thể thử dùng ServBay.
Được rồi, hãy cùng xem có gì mới trong Rust 1.88.0.
Các điểm nổi bật của tính năng mới
Let Chains: Giúp mã điều kiện gọn gàng hơn
Nếu bạn đã từng viết mã Rust, có lẽ bạn đã gặp phải vấn đề với các câu lệnh if let
lồng nhau sâu. Để trích xuất một giá trị từ một enum hoặc struct lồng nhau, mã sẽ trở nên nhiều lớp và khó đọc.
Trước đây, chúng ta có thể đã viết như thế này:
// Cách viết trước đây, lồng nhau sâu
if let Channel::Stable(v) = release_info() { if let Semver { major, minor, .. } = v { if major == 1 && minor == 88 { println!("Cần nhiều lớp để hoàn thành việc kiểm tra..."); } }
}
Giờ đây, let chains, được giới thiệu trong phiên bản 1.88.0, đã giải quyết vấn đề này. Chúng cho phép bạn xâu chuỗi nhiều ràng buộc let
và điều kiện boolean lại với nhau trong một câu lệnh if
hoặc while
bằng cách sử dụng &&
.
Bây giờ, bạn có thể viết như thế này:
// Sử dụng let chains, mã phẳng hơn nhiều
if let Channel::Stable(v) = release_info() && let Semver { major, minor, .. } = v && major == 1 && minor == 88
{ println!("let_chains giúp logic rõ ràng hơn nhiều.");
}
Như bạn có thể thấy, logic của mã trở nên tuyến tính hơn và dễ đọc hơn rất nhiều.
Điều đáng chú ý là tính năng let chains yêu cầu Rust 2024 Edition, vì vậy nếu bạn muốn sử dụng nó, hãy nhớ cập nhật phiên bản (edition) của bạn trong Cargo.toml
.
Tự động dọn dẹp bộ nhớ đệm Cargo: Giải quyết vấn đề dung lượng ổ đĩa
Bất kỳ ai đã sử dụng Rust một thời gian đều biết rằng thư mục ~/.cargo
có thể trở nên rất lớn vì nó lưu trữ tất cả các dependency đã tải xuống. Theo thời gian, nó có thể chiếm hàng chục gigabyte dung lượng ổ đĩa, đòi hỏi phải dọn dẹp thủ công.
Phiên bản 1.88.0 cuối cùng đã tích hợp tính năng tự động dọn dẹp bộ nhớ đệm, mà tôi thấy rất hữu ích. Quy tắc dọn dẹp của nó rất đơn giản:
- Các dependency được tải xuống từ các registry sẽ bị xóa nếu không được truy cập trong 3 tháng.
- Các dependency cục bộ (như dependency từ Git) sẽ bị xóa nếu không được truy cập trong 1 tháng.
Với tính năng này, chúng ta không còn phải lo lắng về việc bộ nhớ đệm của Cargo chiếm quá nhiều dung lượng ổ đĩa.
Hàm trần (Naked Functions)
Đối với các nhà phát triển làm việc với các tác vụ cấp thấp, như viết nhân hệ điều hành hoặc các chương trình nhúng, hàm trần (#[naked]
) mới được thêm vào là một tùy chọn mới hữu ích. Chúng cho phép các nhà phát triển viết một hàm mà phần thân hoàn toàn được cấu thành từ hợp ngữ nội tuyến (inline assembly), vì trình biên dịch sẽ không thêm bất kỳ mã hợp ngữ bổ sung nào (như phần mở đầu và kết thúc hàm). Điều này cung cấp toàn quyền kiểm soát việc triển khai hàm, một điều cực kỳ quan trọng trong một số tình huống nhất định.
Các cập nhật khác
Ngoài ra còn có một số cập nhật nhỏ nhưng hữu ích, chẳng hạn như:
- Cấu hình Boolean: Bây giờ bạn có thể viết trực tiếp
cfg(true)
hoặccfg(false)
trong các thuộc tínhcfg
, trực quan hơn so với cách viếtcfg(all())
trước đây. - Ổn định hóa API: Một loạt API, bao gồm
HashMap::extract_if
vàCell::update
, đã được ổn định hóa và sẵn sàng để sử dụng trong các dự án thực tế của bạn.
Cách nâng cấp lên Rust 1.88.0 với ServBay
Tôi đã đề cập trước đó rằng tôi sử dụng ServBay để quản lý các phiên bản. Dưới đây là các bước cụ thể, thực sự rất đơn giản:
- Mở ứng dụng ServBay.
- Tìm "Packages" (Gói) ở thanh bên trái.
- Bạn sẽ thấy Rust trong danh sách các ngôn ngữ. Nhấp vào nút nâng cấp màu cam bên cạnh nó.
Nếu bạn chưa cài đặt ServBay và muốn dùng thử, bạn có thể tải xuống từ trang web chính thức (https://www.servbay.com). Sau khi tải xuống, hãy vào mục "Packages" ở thanh bên trái, tìm Rust và nhấp vào nút tải xuống màu xanh lá cây để cài đặt nó.
Toàn bộ quá trình được quản lý thông qua giao diện đồ họa, không cần dùng đến dòng lệnh. Những lý do chính tôi thích sử dụng ServBay là:
- Quản lý bằng giao diện đồ họa (GUI): Nó loại bỏ sự phiền phức khi phải nhớ và gõ lệnh, điều này đặc biệt tiện lợi khi bạn chuyển đổi giữa nhiều ngôn ngữ (như Python và Go) và muốn có một giao diện quản lý thống nhất.
- Cô lập môi trường: Các phiên bản khác nhau của công cụ và ngôn ngữ có thể cùng tồn tại mà không ảnh hưởng lẫn nhau, giúp dễ dàng cấu hình môi trường cho các dự án khác nhau.
Tóm tắt
Nhìn chung, Rust 1.88.0 là một bản phát hành rất thiết thực. Các tính năng như let chains và tự động dọn dẹp bộ nhớ đệm Cargo giải quyết trực tiếp các vấn đề thường gặp trong quá trình phát triển hàng ngày, cải thiện đáng kể trải nghiệm của nhà phát triển.