Rust:
การต่อสตริง

วิธีการ:

Rust ให้วิธีการหลายวิธีในการเชื่อมต่อข้อความด้วยกัน มาเริ่มกันเลย

การใช้ตัวดำเนินการ +

let hello = "Hello".to_string();
let world = " world!";
let result = hello + world;
println!("{}", result); // ผลลัพธ์: Hello world!

ตัวดำเนินการ + นำ " world!" ต่อท้าย "Hello", แต่ระวัง, hello ต้องเป็น String, ไม่ใช่ slice

มาโคร format!

let mood = "happy";
let message = format!("Have a {} day!", mood);
println!("{}", message); // ผลลัพธ์: Have a happy day!

format! คล้ายกับ println!, ผสมตัวแปรเข้ากับข้อความ สะดวกมากสำหรับเทมเพลต

การเพิ่มข้อความเข้าไปในสตริง

let mut tip = "Remember to".to_string();
tip.push_str(" breathe.");
println!("{}", tip); // ผลลัพธ์: Remember to breathe.

push_str เป็นการเพิ่ม slice ไปยัง String. เหมาะสำหรับการเพิ่มข้อความทีละน้อย

มุมลึก

การต่อสตริงไม่ใช่ความคิดใหม่ มันมีมาตั้งแต่ยุคเริ่มต้นของการเขียนโปรแกรม; อย่างไรก็ตาม เราต้องการนำคำมาผสานกันเสมอ

ใน Rust, String เป็นชนิดสตริงที่เติบโตได้, เปลี่ยนแปลงได้, ถือครองข้อมูลแบบ UTF-8 มีทางเลือกอื่นอย่าง &str, slice ของสตริง, ซึ่งเป็นมุมมองเข้าไปใน String

แต่ละวิธีมีข้อแลกเปลี่ยน:

  • ตัวดำเนินการ + เหมาะสำหรับการต่อกันหนึ่งหรือสองครั้ง แต่จะกินตัวดำเนินการด้านซ้าย (มันเข้าครอบครอง) ทุกการใช้ + ก็จะจัดสรรหน่วยความจำเพิ่มเติมซึ่งอาจสะสมไป

  • format! ไม่ยึดครอบครองค่าใด ๆ ซึ่งดี แต่มันอาจจะช้าลงเนื่องจากความยืดหยุ่นและการจัดสรรใหม่ทุกครั้งที่เรียก นับเป็นมีดสวิสสำหรับการประกอบสตริง

  • push_str มีประสิทธิภาพสำหรับการเพิ่มทีละน้อย มันไม่จัดสรรหน่วยความจำเว้นแต่ว่า String ต้องการพื้นที่เพิ่ม

การโฟกัสที่ความเป็นเจ้าของและการยืมใน Rust หมายความว่ามันจัดการกับสตริงได้แตกต่างกว่าภาษาอื่น ๆ เช่น Python หรือ JavaScript ความแตกต่างนี้รับประกันความปลอดภัยด้านหน่วยความจำ แต่ก็อาจมาพร้อมกับความยากในการเรียนรู้

ดูเพิ่มเติม

สำหรับการศึกษาเพิ่มเติม: