Rust - Veri Türleri
Tür Sistemi, dil tarafından desteklenen farklı değer türlerini temsil eder. Tip Sistemi, program tarafından depolanmadan veya değiştirilmeden önce sağlanan değerlerin geçerliliğini kontrol eder. Bu, kodun beklendiği gibi davranmasını sağlar. Tip Sistemi ayrıca daha zengin kod ipuçları ve otomatik dokümantasyon da sağlar.
Rust, statik olarak yazılmış bir dildir. Rust'taki her değer belirli bir veri türündedir. Derleyici, kendisine atanan değere göre değişkenin veri türünü otomatik olarak çıkarabilir.
Bir Değişken Bildirin
Kullan let bir değişkeni bildirmek için anahtar kelime.
fn main() {
let company_string = "TutorialsPoint"; // string type
let rating_float = 4.5; // float type
let is_growing_boolean = true; // boolean type
let icon_char = '♥'; //unicode character type
println!("company name is:{}",company_string);
println!("company rating on 5 is:{}",rating_float);
println!("company is growing :{}",is_growing_boolean);
println!("company icon is:{}",icon_char);
}
Yukarıdaki örnekte, değişkenlerin veri türü, onlara atanan değerlerden çıkarılacaktır. Örneğin, Pas değişken dize veri türü atar company_string için float veri türü rating_float vb
Println! makro iki argüman alır -
- Yer tutucu olan özel bir sözdizimi {}
- Değişken adı veya sabit
Yer tutucu, değişkenin değeri ile değiştirilecektir
Yukarıdaki kod parçacığının çıktısı -
company name is: TutorialsPoint
company rating on 5 is:4.5
company is growing: true
company icon is: ♥
Skaler Türler
Skaler tür, tek bir değeri temsil eder. Örneğin, 10,3.14, 'c'. Rust'un dört temel skaler türü vardır.
- Integer
- Floating-point
- Booleans
- Characters
Sonraki bölümlerimizde her tür hakkında bilgi edineceğiz.
Tamsayı
Tam sayı, kesirli bileşeni olmayan bir sayıdır. Basitçe söylemek gerekirse, tamsayı veri türü tam sayıları temsil etmek için kullanılır.
Tam sayılar ayrıca İşaretli ve İşaretsiz olarak sınıflandırılabilir. İşaretli tamsayılar hem negatif hem de pozitif değerleri depolayabilir. İşaretsiz tamsayılar yalnızca pozitif değerleri depolayabilir. Tam sayı türleri aşağıda verilmişse ayrıntılı bir açıklama -
Sr.No. | Boyut | İmzalı | İmzasız |
---|---|---|---|
1 | 8 bit | i8 | u8 |
2 | 16 bit | i16 | u16 |
3 | 32 bit | i32 | u32 |
4 | 64 bit | i64 | u64 |
5 | 128 bit | i128 | u128 |
6 | Kemer | boyutlandırmak | kullanmak |
Bir tamsayının boyutu kemer olabilir . Bu, veri türünün boyutunun makinenin mimarisinden türetileceği anlamına gelir . Arch boyutu olan bir tamsayı, x86 makinesinde 32 bit ve x64 makinesinde 64 bit olacaktır. Bir arch tamsayı, öncelikle bir tür koleksiyonun indekslenmesinde kullanılır.
İllüstrasyon
fn main() {
let result = 10; // i32 by default
let age:u32 = 20;
let sum:i32 = 5-15;
let mark:isize = 10;
let count:usize = 30;
println!("result value is {}",result);
println!("sum is {} and age is {}",sum,age);
println!("mark is {} and count is {}",mark,count);
}
Çıktı aşağıda verildiği gibi olacaktır -
result value is 10
sum is -10 and age is 20
mark is 10 and count is 30
Age değerini bir kayan nokta değeriyle değiştirirseniz yukarıdaki kod bir derleme hatası döndürür .
Tamsayı Aralığı
Her bir işaretli varyant - (2 ^ (n-1) ila 2 ^ (n-1) -1 arasındaki sayıları depolayabilir; burada n, varyantın kullandığı bit sayısıdır. Örneğin, i8, - (2 ^ 7) 2 ^ 7 -1 - burada n'yi 8 ile değiştirdik .
İmzasız her varyant, 0 ile (2 ^ n) -1 arasındaki sayıları saklayabilir . Örneğin, u8, 0 ile 2 ^ 7 arasındaki sayıları depolayabilir , bu da 0 ile 255'e eşittir.
Tamsayı taşması
Bir tamsayı değişkenine atanan değer, veri türü için Rust tanımlı aralığı aştığında bir tam sayı taşması meydana gelir. Bunu bir örnekle anlayalım -
fn main() {
let age:u8 = 255;
// 0 to 255 only allowed for u8
let weight:u8 = 256; //overflow value is 0
let height:u8 = 257; //overflow value is 1
let score:u8 = 258; //overflow value is 2
println!("age is {} ",age);
println!("weight is {}",weight);
println!("height is {}",height);
println!("score is {}",score);
}
İşaretsiz u8 değişkeninin geçerli aralığı 0 ila 255'tir. Yukarıdaki örnekte, değişkenlere 255'ten büyük değerler atanmıştır (Rust'ta bir tamsayı değişkeni için üst sınır). Yürütme sırasında, yukarıdaki kod bir uyarı verecektir -warning − literal out of range for u8ağırlık, boy ve puan değişkenleri için. 255'ten sonraki taşma değerleri 0, 1, 2 vb .'den başlayacaktır. Uyarısız son çıktı aşağıda gösterildiği gibidir -
age is 255
weight is 0
height is 1
score is 2
Yüzer
Rust'taki kayan veri türü şu şekilde sınıflandırılabilir: f32 ve f64. F32 türü tek duyarlıklı bir yüzerdir ve f64 çift duyarlığa sahiptir. Varsayılan tür f64'tür. Float veri türü hakkında daha fazla bilgi edinmek için aşağıdaki örneği inceleyin.
fn main() {
let result = 10.00; //f64 by default
let interest:f32 = 8.35;
let cost:f64 = 15000.600; //double precision
println!("result value is {}",result);
println!("interest is {}",interest);
println!("cost is {}",cost);
}
Çıktı aşağıda gösterildiği gibi olacaktır -
interest is 8.35
cost is 15000.6
Otomatik Tip Döküm
Rust'ta otomatik tip döküme izin verilmez. Aşağıdaki kod parçacığını düşünün. Float değişkenine bir tamsayı değeri atanırinterest.
fn main() {
let interest:f32 = 8; // integer assigned to float variable
println!("interest is {}",interest);
}
Derleyici bir mismatched types error aşağıda verildiği gibi.
error[E0308]: mismatched types
--> main.rs:2:22
|
2 | let interest:f32=8;
| ^ expected f32, found integral variable
|
= note: expected type `f32`
found type `{integer}`
error: aborting due to previous error(s)
Numara Ayırıcı
Büyük sayıların kolay okunabilirliği için, basamakları ayırmak için görsel ayırıcı _ alt çizgi kullanabiliriz. Yani 50.000, 50_000 olarak yazılabilir. Bu, aşağıdaki örnekte gösterilmektedir.
fn main() {
let float_with_separator = 11_000.555_001;
println!("float value {}",float_with_separator);
let int_with_separator = 50_000;
println!("int value {}",int_with_separator);
}
Çıktı aşağıda verilmiştir -
float value 11000.555001
int value 50000
Boole
Boole türlerinin iki olası değeri vardır - doğru veya yanlış . Kullanbool bir boole değişkeni bildirmek için anahtar kelime.
İllüstrasyon
fn main() {
let isfun:bool = true;
println!("Is Rust Programming Fun ? {}",isfun);
}
Yukarıdaki kodun çıktısı -
Is Rust Programming Fun ? true
Karakter
Rust'taki karakter veri türü sayıları, harfleri, Unicode'u ve özel karakterleri destekler. Kullancharbir karakter veri türü değişkeni bildirmek için anahtar sözcük. Rust'un karakter türü bir Unicode Skaler Değerini temsil eder, bu da ASCII'den çok daha fazlasını temsil edebileceği anlamına gelir. Unicode Skaler Değerler aralığıU+0000 -e U+D7FF ve U+E000 -e U+10FFFF kapsayıcı.
Karakter veri türü hakkında daha fazla bilgi edinmek için bir örnek ele alalım.
fn main() {
let special_character = '@'; //default
let alphabet:char = 'A';
let emoji:char = '';
println!("special character is {}",special_character);
println!("alphabet is {}",alphabet);
println!("emoji is {}",emoji);
}
Yukarıdaki kodun çıktısı -
special character is @
alphabet is A
emoji is