Merhaba,
https://doc.rust-lang.org/book/ dökümandan devam ediyoruz.
3- Programlama Kavramları
2-) Data Tipleri
Scaler ve bileşik olmak üzere 2 tip veri alt türünü inceleyeceğiz.
let guess: u32 = "42".parse().expect("Not a number!");
: u32 tipindeki açıklamayı eklemezsek eğer rust hangi tipi kullanmak isteyeceğimizi bilemeyeceği için hata döndürür.

Skalar Veri Tipleri
Rust’ın dört temel skaler tipi var: integer, float, boole ve character.
- Integer
Kesirli bileşeni olmayan veri türleri için kullanılır. İşaretsiz sayı türleri u ile başlar. Sayının negatif olamayacağı durumlarda u kullanılırken, negatif olma durumu da varsa i kullanılır.
u için 32 bitlik olanı, karşılık olarak 2^32 -1 değeri maksimum değeri ifade eder. i için ise -2^31 ile + 2^31 arasındadır.
Length Signed Unsigned
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
arch isize usize
- Float
32 bit ve 64 bit versiyonları var. default olarak :f64 olarak değere sahiptir. ancak :f32 olarak belirtilirse değeri onunla kullanılır.
fn main() {
let x = 2.0; // f64
let y: f32 = 3.0; // f32
}
Numerik İşlemler
Toplama çıkarma çarpma bölme gibi işlemleri için kullanımlar aşağıdaki gibi olur;
fn main() {
// addition
let sum = 5 + 10;
// subtraction
let difference = 95.5 - 4.3;
// multiplication
let product = 4 * 30;
// division
let quotient = 56.7 / 32.2;
let truncated = -5 / 3; // Results in -1
// remainder
let remainder = 43 % 5;
}
işlem sonucu ;

division işlemlerinde daha da bariz görüldüğü üzere, ilk bölmeyi float tipiyle yaparken 2.ci bölme işlemini işaretli 32 bit özelinde yaptı.

- Boolean Tip
1 byte değerindeki boolean tipleri rust da da true ve false olmak üzere 2 değere sahiptir.
let t = true;
let f: bool = false; // with explicit type annotation
- Character Tipleri
diğer dillerden de aşina olduğumuz üzere char veri tiplerine benzemektedir çalışması
let c = 'z';
let z: char = 'ℤ'; // with explicit type annotation
let heart_eyed_cat = '😻';
char veri türü 4 byte boyutundadır ve bir Unicode Skaler Değerini temsil eder; bu da yalnızca ASCII’den çok daha fazlasını temsil edebileceği anlamına gelir. Aksanlı harfler; Çince, Japonca ve Korece karakterler; emoji; ve sıfır genişlikte boşluklar, Rust’ta geçerli karakter değerleridir. Unicode Skaler Değerleri, U+0000’den U+D7FF’ye ve U+E000’den U+10FFFF’ye kadar değişir.
Compound Veri Tipleri
- Tupple
içeriğinde birbirinden farklı veri türlerini dize halinde tutabilir.
let tup = (500, 6.4, 1);
//let tup: (i32, f64, u8) = (500, 6.4, 1);
let (x, y, z) = tup;
println!("The value of y is: {y}");
yukarıdaki kod örneğinde derlediğimizde bir hata üretir. Bunun nedeni de x ve z değişkenlerinin sonraki kodlarda kullanılmaması.
Değişken x’in kodda bildirilmesine rağmen kullanılmaması nedeniyle Rust derleyicisi tarafından üretilen bu hata varsayılan olarak, derleyici daha temiz ve daha verimli kod teşvik etmek için kullanılmayan değişkenler hakkında uyarıyor aslında.
Eğer x’i kullanmayı planlamıyorsak, kullanılmama durumunun kasıtlı olduğunu belirtmek için önüne bir alt çizgi(_) eklememiz gerekiyor.
bu da kodu şuna evirmemizi zorunlu kılar;
let tup = (500, 6.4, 1);
//let tup: (i32, f64, u8) = (500, 6.4, 1);
let (_x, y, _z) = tup;
println!("The value of y is: {y}");
bu küçük hatırlatma sonrası kodu çalıştırdığımızda;

tupple dizesindeki y değişkeni verisini de bu şekilde okumuş oluyoruz.
Erişilmek istenen değerin dizinini takip eden bir nokta (.) kullanarak bir tupple öğesine doğrudan da erişebiliriz;
//let tup = (500, 6.4, 1);
let tup: (i32, f64, u8) = (500, 6.4, 1);
//let (_x, _y, _z) = tup;
let five_hundred = tup.0;
println!("The value of five_hundred is: {five_hundred}");

burada tup isimli değişkenin sıfırıncı değişkenine erişmek istediğimizi belirtiyoruz ve 0.cı değişkende olan 500 verisini okuyabiliyoruz.
- Array Tip
Birden fazla değerden oluşan bir koleksiyona sahip olmanın bir başka yolu da dizidir. Bir tuple’ın aksine, bir dizinin her elemanı aynı türde olmalıdır. Bazı diğer dillerdeki dizilerin aksine, Rust’taki dizilerin sabit bir uzunluğu vardır.
dolayısıyla sabit sayıda öğeleri olan bir dizi kullanmak istediğimizde array mantıklı olur.
let hours = [1,2,3,4,5,6,7,8,9,10,11,12];
//let hours: [i32; 5] = [1,2,3,4,5,6,7,8,9,10,11,12];
let months = ["January", "February", "March", "April", "May", "June","July","August", "September", "October", "November", "December"];
bir diziyi başlangıç değerini, ardından noktalı virgül ve ardından köşeli parantez içinde dizinin uzunluğunu belirterek her öğe için aynı değeri içerecek şekilde bir dizi başlatabilirsiniz;
let a = [3; 5];
// yukarıdaki kodu yazmakla aşağıdakini yazmak aynı anlamdadır.
let a = [3, 3, 3, 3, 3];
dizideki veriye erişim de yine köşeli parantez içine yazılan index numaraları ile olur.
