Rust Dilinde Veri Tipleri Ve Değişkenler

Öncelikle Rust dili, statically typed diye geçen, veri türlerinin (int, float, boolen …) compile time da tanımlandığı bir yazılım dili diye geçiyor. Ancak development noktasında dynamic typinge izin veriyor. Bir script dili olmadığı için yani bir compiling işlemi gerçekleştiği için, type uyumsuzlukları compile time’da yakalamak mümkün. Bu yüzden bize “let” keywordüyle dinamik gibi görünen tanımlamalar yapmaya izin veriyor.

fn main(){
  let a:u8 = 125; // unsigned int 0-255 8 bit
  println!("a => {}", a);
  // u unsigned, 0 - 2^8-1 'e kadar koyabiliriz
  // i signed -2^(N-1) ----- 2^(N-1)-1 arasında
  let b:i8 = 0; // Signed -128_127 arası 

}

Burada let keywordünü kullanarak bir unsigned integer 8 bitlik bir sayı belirledik. Altta ise i8 olarak yazdığımız tür, signed integer 8 bitlik bir sayı. Rust dilinde türleri belirlemek için typescriptteki gibi “:” operatörünü kullanıyoruz.

Ancak let ile tanımladığımız değişkeni daha sonra değiştiremeyiz. Çünkü default olarak değişken immutable tanımlanır. Onu değiştirilebilir yapmak için mut keywordünü kullanmamız gerekir. Bu benim rust dilinde şaşırdığım bir konuydu. F# haricinde böyle bir yaklaşım görmemiştim. Yanlış hatırlamıyorsam F# dilinde de benzer şekilde bir şeyleri mutable(değiştirilebilir) yapmak için ekstra bir kullanım söz konusuydu.

Yani değiştirilebilir yapmak için değişkeni şu şekilde tanımlamak gerekiyor:

let mut a:i8 = 12;

Bir diğer önemli nokta da importlar. Bunun için ayrıca araştırıp bir yazı yazacağım ama şimdi BTK akademi rust eğitiminde karşıma çıktığı için değinmek istiyorum. C# kullananlar bu tür namespace kavramına ve import yaklaşımına aşinadır zaten. Burada rust dilinde bir değişkenin byte türünden değerini almak için std namespace altında mem‘i kullanıyoruz. Öncelikle fn main üstünde bu kütüphaneyi ekleyelim :

use std::mem;
fn main() { ... }

Sonrasında da değişkenin byte türünde değerini almak için :

 let mut c:i32 = 12345678; // 32 bit == 4 byte

  println!("c = {} ve boyutu {}", c, mem::size_of_val(&c));

Bu bize 4 olarak çıktıyı verecektir.

Değişkenin boyutunu belirlemek için isize veya usize keywordlerini de kullanabiliriz. Bu da bize sistemin boyutunda (32 bit sistemde 32 bit, 64 bit sistemde 64 bit) bir değişken oluşturmuş oluruz :

let mut d:isize = 123;

Ayrıca size_of_val fonsiyonunu çağırırken değişklenin pointer(referans)ını verdiğimize dikkat etmemiz gerekiyor. C dilindeki referansa erişme mantığı anladığım kadarıyla Rust için de geçerli ve “&” operatörü bu amaçla kullanılıyor.

Float değerlerde ise bazı özel durumlar mevcut.

Float sadece f32 veya f64 olabilir. Nan veya +- sonsuz olabilir.

let f:f32 = 2.0000005;

Boolean değerlerde true veya false değer alır ama 1 byte/8 bit değer tutar.

let bVal:bool = true;

Bu konu bu kadar olsun sonraki aşamalardaki operatörler vs başka bir yazıda devam edeceğim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.