Ek A: Anahtar Kelimeler
Aşağıdaki listeler, Rust dili tarafından mevcut veya gelecekteki kullanım için ayrılmış olan anahtar kelimeleri (keywords) içerir. Bu nedenle, tanımlayıcı (identifier) olarak kullanılamazlar (ancak “Ham Tanımlayıcılar” bölümünde tartışacağımız gibi ham tanımlayıcılar (raw identifiers) olarak kullanılabilirler). Tanımlayıcılar (Identifiers); fonksiyonların, değişkenlerin, parametrelerin, struct alanlarının, modüllerin, crate’lerin, sabitlerin (constants), makroların, statik değerlerin, niteliklerin (attributes), türlerin, trait’lerin veya ömürlerin isimleridir.
Şu Anda Kullanımda Olan Anahtar Kelimeler
Aşağıda, şu anda kullanımda olan anahtar kelimelerin işlevleriyle birlikte listesi verilmiştir.
as: İlkel tür dönüştürme (primitive casting) yapar, bir öğeyi içeren belirli trait’in belirsizliğini giderir veyauseifadelerinde öğeleri yeniden adlandırır.async: Mevcut thread’i (iş parçacığını) bloke etmek yerine birFuturedöndürür.await: BirFuture’ın sonucu hazır olana kadar yürütmeyi askıya alır.break: Bir döngüden anında çıkar.const: Sabit (constant) öğeleri veya sabit ham işaretçileri (raw pointers) tanımlar.continue: Bir sonraki döngü iterasyonuna atlar.crate: Bir modül yolunda (path), crate kökünü (root) ifade eder.dyn: Bir trait nesnesine dinamik dağıtım (dynamic dispatch) yapar.else:ifveif letkontrol akışı yapılarında, koşulun sağlanmadığı durumlar için (fallback) kullanılır.enum: Bir numaralandırma (enumeration) tanımlar.extern: Harici bir fonksiyonu veya değişkeni bağlar (link).false: Boolean yanlış (false) literali.fn: Bir fonksiyon veya fonksiyon işaretçisi türünü tanımlar.for: Bir iteratörden gelen öğeler üzerinde döngü oluşturur, bir trait’i uygular veya daha yüksek dereceli (higher ranked) bir ömrü belirtir.if: Bir koşullu ifadenin sonucuna göre dallanma (branch) yapar.impl: Doğal (inherent) veya bir trait işlevselliğini uygular.in:fordöngüsü sözdiziminin bir parçasıdır.let: Bir değişkeni bağlar (bind).loop: Koşulsuz olarak döngü oluşturur.match: Bir değeri desenlerle (patterns) eşleştirir.mod: Bir modül tanımlar.move: Bir closure’ın (kapanışın) yakaladığı tüm değerlerin sahipliğini almasını sağlar.mut: Referanslarda, ham işaretçilerde (raw pointers) veya desen bağlamalarında değiştirilebilirliği (mutability) belirtir.pub: Struct alanlarında,implbloklarında veya modüllerde genel görünürlüğü belirtir.ref: Referans olarak bağlar.return: Fonksiyondan dönüş yapar.Self: Tanımladığımız veya uyguladığımız tür için bir tür takma adı (type alias).self: Metot öznesi veya mevcut modül.static: Tüm program yürütmesi boyunca süren küresel değişken (global variable) veya ömür.struct: Bir yapı tanımlar.super: Mevcut modülün üst modülü.trait: Bir trait tanımlar.true: Boolean doğru (true) literali.type: Bir tür takma adı (type alias) veya ilişkili tür (associated type) tanımlar.union: Bir union tanımlar; yalnızca bir union bildirimi (declaration) içinde kullanıldığında anahtar kelimedir.unsafe: Güvenli olmayan (unsafe) kodu, fonksiyonları, trait’leri veya implementasyonları belirtir.use: Sembolleri kapsama dahil eder.where: Bir türü kısıtlayan yan tümceleri (clauses) belirtir.while: Bir ifadenin sonucuna göre koşullu olarak döngü oluşturur.
Gelecekteki Kullanım İçin Ayrılmış Anahtar Kelimeler
Aşağıdaki anahtar kelimelerin henüz herhangi bir işlevi yoktur, ancak potansiyel gelecekteki kullanım için Rust tarafından ayrılmıştır:
abstractbecomeboxdofinalgenmacrooverrideprivtrytypeofunsizedvirtualyield
Ham Tanımlayıcılar (Raw Identifiers)
Ham tanımlayıcılar (raw identifiers), normalde izin verilmeyen yerlerde anahtar kelimeleri kullanmanızı sağlayan bir sözdizimidir (syntax). Bir anahtar kelimenin önüne r# ekleyerek bir ham tanımlayıcı kullanırsınız.
Örneğin, match bir anahtar kelimedir. Adı olarak match’i kullanan aşağıdaki fonksiyonu derlemeye çalışırsanız:
Dosya Adı: src/main.rs
fn match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
şu hatayı alırsınız:
error: expected identifier, found keyword `match`
--> src/main.rs:4:4
|
4 | fn match(needle: &str, haystack: &str) -> bool {
| ^^^^^ expected identifier, found keyword
Hata, match anahtar kelimesini fonksiyon tanımlayıcısı olarak kullanamayacağınızı gösteriyor. match kelimesini bir fonksiyon adı olarak kullanmak için, aşağıdaki gibi ham tanımlayıcı sözdizimini kullanmanız gerekir:
Dosya Adı: src/main.rs
fn r#match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
fn main() {
assert!(r#match("foo", "foobar"));
}
Bu kod hiçbir hata olmadan derlenecektir. Fonksiyon adının tanımındaki ve fonksiyonun main içinde çağrıldığı yerdeki r# ön ekine dikkat edin.
Ham tanımlayıcılar, rezerve edilmiş bir anahtar kelime olsa bile, seçtiğiniz herhangi bir kelimeyi tanımlayıcı olarak kullanmanıza olanak tanır. Bu, tanımlayıcı adlarını seçme konusunda bize daha fazla özgürlük vermenin yanı sıra, bu kelimelerin anahtar kelime olmadığı bir dilde yazılmış programlarla entegre olmamızı sağlar. Ek olarak, ham tanımlayıcılar, crate’inizin kullandığından farklı bir Rust sürümünde (edition) yazılmış kütüphaneleri kullanmanıza olanak tanır. Örneğin, try 2015 sürümünde bir anahtar kelime değildir, ancak 2018, 2021 ve 2024 sürümlerinde bir anahtar kelimedir. 2015 sürümü kullanılarak yazılmış ve bir try fonksiyonu olan bir kütüphaneye bağımlıysanız, daha sonraki sürümlerde o fonksiyonu kodunuzdan çağırmak için ham tanımlayıcı sözdizimini, bu durumda r#try’ı kullanmanız gerekecektir. Sürümler (editions) hakkında daha fazla bilgi için Ek E’ye bakın.