Bỏ qua để đến nội dung

Bảng tra cứu nhanh Rust (cheat sheet)

Một trang để tra nhanh những thứ bạn hay cần xem lại mà không phải đọc lại cả bài học. Mỗi phần đều có liên kết về trang giải thích kỹ hơn.

Từ khóa Ý nghĩa
let Khai báo biến (Biến)
mut Cho phép biến hoặc tham chiếu thay đổi được (Biến)
const Khai báo hằng số (Biến)
fn Khai báo hàm (Hàm)
struct Khai báo struct (Struct)
enum Khai báo enum (Enum)
impl Thêm phương thức cho một kiểu (Struct, Trait)
trait Khai báo trait (Trait)
match So khớp mẫu (pattern matching) trên một giá trị (Match)
if let / while let So khớp với đúng một mẫu (If Let / While Let)
loop / while / for Ba loại vòng lặp (Vòng lặp, While, For)
break / continue Điều khiển vòng lặp (Break/Continue)
mod Khai báo module (Module)
pub Cho phép dùng một thành phần bên ngoài module của nó (Module)
use Đưa một đường dẫn vào phạm vi (scope) (Module)
unsafe Mở khóa con trỏ thô và các thao tác mà bạn tự chịu trách nhiệm kiểm tra (Unsafe)
move Buộc closure lấy quyền sở hữu các giá trị nó bắt (capture) (Đồng thời)
& / &mut Mượn / mượn khả biến một giá trị (Mượn)
Phương thức Công dụng
.len() Độ dài tính theo byte
.trim() Bỏ khoảng trắng ở đầu và cuối
.to_uppercase() / .to_lowercase() Đổi chữ hoa / chữ thường
.contains(pat) Kiểm tra có chứa chuỗi con / mẫu hay không
.replace(from, to) Thay thế mọi chỗ khớp
.push_str(s) Nối thêm một &str
.push(c) Nối thêm một char
.chars() Duyệt qua từng ký tự
.split(pat) Tách thành một iterator gồm các chuỗi con
.parse::<T>() Chuyển văn bản sang kiểu khác (trả về Result)

Xem trang Chuỗi để biết chi tiết và ví dụ.

Phương thức Công dụng
.push(x) Thêm vào cuối
.pop() Lấy ra và trả về phần tử cuối (Option)
.remove(i) Xóa phần tử ở vị trí i
.len() Số phần tử
.is_empty() Kiểm tra vector có rỗng không
.get(i) Truy cập theo chỉ số một cách an toàn (Option, không panic)
.iter() Duyệt qua bằng tham chiếu
.contains(&x) Kiểm tra có chứa một giá trị không
.sort() Sắp xếp tại chỗ
.sort_by_key(|x| ...) Sắp xếp theo một trường hoặc một khóa tính ra
.dedup() Bỏ các phần tử trùng nằm liền nhau (nên sắp xếp trước)

Xem các trang Vector, Sắp xếp và tìm kiếm và Iterator để biết chi tiết và ví dụ.

Kiểu Dùng khi bạn cần…
Vec<T> Một danh sách có thứ tự, có thể mở rộng
HashMap<K, V> Tra cứu nhanh một giá trị theo khóa
HashSet<T> Các phần tử không trùng nhau và kiểm tra nhanh “có trong này không?”
BTreeMap<K, V> Các cặp khóa–giá trị được giữ theo thứ tự khóa
VecDeque<T> Một hàng đợi: thêm và lấy ra ở cả hai đầu

Xem các trang HashMap và HashSet và BTreeMap để biết chi tiết và ví dụ.

Phương thức Dùng cho Công dụng
.unwrap() Cả hai Lấy giá trị, panic nếu là None/Err
.expect("msg") Cả hai Giống .unwrap(), nhưng với thông báo panic do bạn viết
.unwrap_or(default) Cả hai Lấy giá trị, hoặc một giá trị dự phòng
.is_some() / .is_none() Option Kiểm tra đó là biến thể (variant) nào
.is_ok() / .is_err() Result Kiểm tra đó là biến thể nào
? Cả hai Trả về sớm khi gặp None/Err

Xem các trang Option và Result để biết chi tiết và ví dụ.

Định dạng In ra gì
{} Hiển thị bình thường (cần trait Display)
{:?} Định dạng debug
{:#?} Định dạng debug, trình bày đẹp nhiều dòng
{:.2} 2 chữ số thập phân
{:5} Đệm cho đủ độ rộng 5
{name} Chèn trực tiếp biến tên là name

Xem trang In ra màn hình để biết chi tiết và ví dụ.

Lệnh Công dụng
cargo new name Tạo dự án mới
cargo run Build và chạy
cargo check Kiểm tra lỗi thật nhanh, không build ra file chạy
cargo test Chạy các test
cargo add crate Thêm một thư viện phụ thuộc
cargo fmt Định dạng code
cargo clippy Soát code để tìm lỗi hay gặp
cargo build --release Build ra file chạy đã tối ưu

Xem trang Cargo và crate để biết chi tiết và ví dụ.

Cú pháp Ý nghĩa
1..5 Từ 1 đến 5, không gồm 5
1..=5 Từ 1 đến 5, gồm cả 5
..3 Từ đầu đến 3, không gồm 3
2.. Từ 2 đến hết
.. Tất cả

Xem các trang For và Slice để biết chi tiết và ví dụ.

Bạn cần… Crate Bài học
JSON (và các định dạng khác) serde + serde_json JSON với Serde
Code bất đồng bộ, hẹn giờ, lập trình mạng tokio Async/Await
Giao diện dòng lệnh clap Công cụ dòng lệnh với clap
Xử lý lỗi dễ dàng anyhow, thiserror anyhow & thiserror
Số ngẫu nhiên rand Số ngẫu nhiên
Biểu thức chính quy regex Biểu thức chính quy
Ngày và giờ chrono Ngày và giờ
Ghi log log + env_logger, tracing Ghi log
Web server axum Web API với Axum

Thêm bất kỳ crate nào bằng cargo add <crate>. Xem Cargo và crate để biết cách chọn một crate tốt.