String
String یک رشته قابل رشد با کدگذاری UTF-8 است:
fn main() { let mut s1 = String::new(); s1.push_str("سلام"); println!("s1: len = {}, capacity = {}", s1.len(), s1.capacity()); let mut s2 = String::with_capacity(s1.len() + 1); s2.push_str(&s1); s2.push('!'); println!("s2: len = {}, capacity = {}", s2.len(), s2.capacity()); let s3 = String::from("🇨🇭"); println!("s3: len = {}, number of chars = {}", s3.len(), s3.chars().count()); }
String پیادهسازیکننده Deref<Target = str> است، که به این معناست که میتوانید تمام متدهای str را بر روی String فراخوانی کنید.
This slide should take about 5 minutes.
String::newیک رشته جدید خالی برمیگرداند. ازString::with_capacityاستفاده کنید زمانی که میدانید چقدر داده میخواهید به رشته اضافه کنید.String::lenاندازه رشتهStringرا بهصورت بایت برمیگرداند (که ممکن است با طول آن بهصورت کاراکتر متفاوت باشد).String::charsیک تکرارگر (iterator) از روی کاراکترهای واقعی برمیگرداند. توجه داشته باشید که یکcharممکن است با آنچه که یک انسان به عنوان “کاراکتر” در نظر میگیرد، متفاوت باشد به دلیل grapheme clusters.- زمانی که مردم به رشتهها اشاره میکنند، ممکن است منظورشان
str&یاStringباشد. - زمانی که یک تایپ،
<Deref<Target = Tرا پیادهسازی میکند، کامپایلر به شما این امکان را میدهد که بهطور شفاف متدهایTرا فراخوانی کنید.- ما هنوز
Dereftrait را بررسی نکردهایم، بنابراین در این مرحله این بیشتر توضیحدهنده ساختار نوار کناری در مستندات است. Stringپیادهسازیکننده<Deref<Target = strاست که بهطور شفاف دسترسی به متدهایstrرا فراهم میکند.;()let s3 = s1.derefو;let s3 = &*s1بنویسید و مقایسه کنید .
- ما هنوز
- بنویسید و مقایسه کنید
let s3 = s1.deref();وlet s3 = &*s1;. - راههای مختلف برای ایندکسگذاری یک
Stringرا مقایسه کنید:- به یک کاراکتر با استفاده از
()s3.chars().nth(i).unwrap، جایی کهiدر محدوده است یا خارج از محدوده. - به یک زیررشته با استفاده از
[4..0]s3، جایی که این برش در مرزهای کاراکترها است یا نباشد.
- به یک کاراکتر با استفاده از
- بسیاری از تایپ دادهها میتوانند با استفاده از متد
to_stringبه رشته تبدیل شوند. این ترید بهطور خودکار برای تمام تایپهایی کهDisplayرا پیادهسازی میکنند، پیادهسازی شده است، بنابراین هر چیزی که میتواند قالببندی شود، همچنین میتواند به رشته تبدیل شود.