การต่อสตริงด้วย format!
คำอธิบาย
เราสามารถสร้างและต่อสตริงขึ้นมาได้ด้วยการเรียกเมท็อด push และ push_str บนตัวแปร String แบบ mutable หรือจะใช้โอเปอเรเตอร์ + ก็ได้ อย่างไรก็ตาม ในหลายๆ กรณี การเลือกใช้มาโคร format! มักจะสะดวกสบายกว่ามาก โดยเฉพาะอย่างยิ่งเมื่อต้องผสมผสานระหว่างสตริงคงที่ (String Literals) กับตัวแปรต่างๆ
ตัวอย่าง
#![allow(unused)]
fn main() {
fn say_hello(name: &str) -> String {
// We could construct the result string manually.
// let mut result = "Hello ".to_owned();
// result.push_str(name);
// result.push('!');
// result
// But using format! is better.
format!("Hello {name}!")
}
}
ข้อดี
การใช้ format! มักเป็นแนวทางที่กระชับ สละสลวย และอ่านเข้าใจง่ายที่สุดในการต่อสตริงเข้าด้วยกัน
ข้อเสีย
ในแง่ของความเร็ว มักไม่ใช่วิธีที่มีประสิทธิภาพสูงสุด เพราะการเรียกใช้งาน push หรือ push_str ต่อเนื่องกันบนสตริงแบบ mutable จะทำงานได้เร็วกว่า (โดยเฉพาะอย่างยิ่งหากมีการจัดสรรพื้นที่หน่วยความจำล่วงหน้า (Pre-allocation) ตามขนาดที่คาดหวังไว้แล้ว)