Nối chuỗi ký tự

Rust:
Nối chuỗi ký tự

Làm thế nào:

Rust cung cấp cho bạn một số cách để ghép các văn bản lại với nhau. Hãy cùng khám phá.

Sử dụng Toán tử +

let hello = "Hello".to_string();
let world = " world!";
let result = hello + world;
println!("{}", result); // Đầu ra: Hello world!

Toán tử + sẽ ghép " world!" vào sau "Hello", nhưng hãy chú ý, hello cần phải là String, không phải là một lát cắt.

Macro format!

let mood = "happy";
let message = format!("Have a {} day!", mood);
println!("{}", message); // Đầu ra: Have a happy day!

format! giống như println!, trộn biến vào trong văn bản. Rất tiện lợi cho việc tạo mẫu.

Đẩy vào một Chuỗi

let mut tip = "Remember to".to_string();
tip.push_str(" breathe.");
println!("{}", tip); // Đầu ra: Remember to breathe.

push_str thêm một lát cắt vào một String. Tốt cho việc thêm từng miếng một.

Sâu lắng

Việc nối chuỗi không phải là một khái niệm mới. Nó đã tồn tại từ bình minh của lập trình; sau tất cả, chúng ta luôn cần phải ghép các từ lại với nhau.

Trong Rust, một String là một kiểu chuỗi UTF-8 có thể phát triển, có thể thay đổi và được sở hữu. Có những lựa chọn thay thế như &str, một lát cắt chuỗi, là cái nhìn vào một String.

Mỗi phương pháp đều có những sự đánh đổi của nó:

  • Toán tử + nhanh chóng cho một hoặc hai lần nối nhưng nó sẽ tiêu thụ toán hạng bên trái (nó giành quyền sở hữu). Mỗi + cũng cấp phát bộ nhớ, có thể cộng dồn lên.

  • format! không giành bất kỳ giá trị sở hữu nào, điều đó thật lịch sự, nhưng nó có thể chậm hơn do sự linh hoạt và cấp phát cho mỗi lần gọi. Đây là dao Thụy Sĩ cho việc lắp ráp chuỗi.

  • push_str hiệu quả cho việc thêm vào lặp đi lặp lại. Nó không cấp phát trừ khi String cần thêm không gian.

Sự tập trung của Rust vào sở hữu và mượn nghĩa là nó xử lý chuỗi một chút khác biệt so với các ngôn ngữ như Python hay JavaScript. Sự khác biệt này đảm bảo an toàn bộ nhớ nhưng cũng có thể đi kèm với một đường cong học tập.

Xem thêm

Để hiểu sâu hơn: