Menu
Coddy logo textTech

String ve &str

Coddy'nin Rust Journey'sinin Logic & Flow bölümünün bir parçası — ders 54 / 66.

Rust'ın farklı amaçlara hizmet eden iki ana dize (string) türü vardır: String ve &str. Bunlar arasındaki farkı anlamak, Rust'ta metinlerle etkili bir şekilde çalışmak için çok önemlidir.

Bir String, değiştirebileceğiniz, sahipli ve heap üzerinde ayrılmış bir dizedir. Bir String oluşturduğunuzda, programınız bu veriye sahip olur ve onun belleğini yönetmekten sorumludur. Onu büyütebilir, küçültebilir ve içeriğini değiştirebilirsiniz; çünkü mut ile tanımlandığında değiştirilebilirdir.

let mut my_string = String::from("Hello");
my_string.push_str(" World"); // Bu çalışır çünkü String sahiplenilmiştir (owned) ve değiştirilebilirdir (mutable)

Buna karşılık, &str ("string slice" olarak okunur), string verisine yönelik ödünç alınmış, değişmez bir görünümdür. İşaret ettiği verinin sahibi değildir; sadece başka bir yerde bulunan bir string içeriğine yönelik bir referanstır. "Hello" gibi string sabitleri aslında &str türündedir.

let my_slice: &str = "Hello World"; // Bu bir string dilimidir

String yapısını içine yazabildiğiniz ve üzerinde değişiklik yapabildiğiniz bir kitaba sahip olmak gibi düşünün, &str ise başka birinin kitabını ödünç almak gibidir - okuyabilirsiniz ama değiştiremezsiniz. Bu ayrım Rust'ın sahiplik (ownership) sistemi için temeldir ve bellek güvenliğinin sağlanmasına yardımcı olur.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Kopya kağıdı

Rust'ın iki ana dize (string) türü vardır:

  • String - sahipli (owned), yığında (heap) ayrılmış, değiştirilebilir (mutable) dize
  • &str - ödünç alınmış (borrowed), değiştirilemez (immutable) dize dilimi (dize verisine referans)

Bir String oluşturma:

let mut my_string = String::from("Hello");
my_string.push_str(" World");

Dize sabitleri (string literals) &str türündedir:

let my_slice: &str = "Hello World";

String kendi verisine sahiptir ve değiştirilebilir, oysa &str değiştirilemeyen bir referanstır.

Kendin dene

Bu ders bir kod alıştırması içermiyor.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Logic & Flow bölümündeki tüm dersler