Pas Dize karşı str
Bir süre Pas ve String
ortaya çıkan yeni vahşi bir tip olmadım. Merak ediyorum bu yüzden farklar nelerdir? Ne zaman bir str
ve yardımcısı yerine String
versa kullanır? Onlardan biri kaldırılmış oluyor?
CEVAP
String
dinamik yığın dize türü, Vec
gibi. ya da dize verilerinizi kendi değiştirmek istediğinizde bunu kullanın. (Şimdi kaldırıldı ~str
eski tip, değiştirme.)
str
şimdi sadece her zaman (değişmez1bir yere bellekte UTF-8 bayt sırası (bilinmeyen uzunlukta). Boyutu bilinmeyen olduğu için, tek bir işaretçi arkasında işlemek, str
yani en sık2&str
olarak görünür: UTF-8 bazı veriler için başvuru normalde bir denir"". dilim Bir dilim bazı verilerin üzerine sadece bir görüştür, ve bu verileri her yerde, örneğin olabilir
- statik depolama: bir string
"foo"
program çalıştığında veri yürütülebilir içine kodlanmış olduğu&str
ve yüklü bir bellek değişmez. - bir yığın
String
ayrılan içinde:String
String
dereferences to a&str
view'nin verileri. yığın aşağıdaki yığın oluşturur ayrılan bir dizi bayt, ve o zaman alır view of that data as a
&str
: örneğinuse std::str; let x: &[u8] = &['a' as u8, 'b' as u8]; let stack_str: &str = str::from_utf8(x).unwrap();
Özetle, kullanın String
eğer ihtiyaç sahibi bir dize veri (gibi geçen dizeleri için başka işler veya bina onlara çalışma zamanı) ve kullanmak &str
eğer sadece bir bakış bir dize.
(Bu aynı ilişki arasında bir vektör Vec<T>
ve bir dilim &[T]
ve benzer bir ilişki arasında bir değer T
referans &T
genel tür.)
1str
sabit uzunlukta (edemiyor yazma bayt ötesinde sonunda, ya da beni izleyen geçersiz bayt), ve o zamandan beri UTF-8 değişken genişlik kodlama, bu etkin gücü str
ler için değişmez. Genel olarak, mutasyon gerektirir yazma daha fazla veya daha az bayt daha vardı önce (örneğin, yerine bir a
(1 bayt) ä
(2 bayt) gerektirir daha fazla oda yapmak içinde str
).
2Şu andasadece&str
ama dynamically sized types başvuru dizisi UTF-8 bayt sayılır Rc<str>
gibi şeyler verir gibi görünür. Ayrıca, str
sabit boyutlu sürümü (henüz) yok beri DST uyması düzeni tamamen yok oldukça, olmayabilir.
Nasıl bir dize kontrol etmek için java...
PHP rastgele dize jeneratör...
Bash bir diziye bir dize bölmek...
Liste<Göster<Dize, Dize>> ...
Android için bir tamsayı bir dize dönü...