SORU
11 HAZİRAN 2014, ÇARŞAMBA


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
11 HAZİRAN 2014, ÇARŞAMBA


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: StringString 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ğin

    use 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ü strler 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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Le Cargo !

    Le Cargo !

    24 HAZİRAN 2007
  • makemebad35

    makemebad35

    17 NİSAN 2006
  • Yanko Kral

    Yanko Kral

    8 HAZİRAN 2006