Rust Dərs 1

Hasan Jafarov
3 min readAug 10, 2021

Rust bir neçə ildir stackoverflow-da anketlərdə ən çox sevilən dil seçilir. Rust dili C++ dilinə bənzəyir. Sistem proqramlama üçün də çox istifadə olunur. Rust asinxron əməliyyatlar yerinə yetirmək üçün yaradılıb deyə bilərik. Memory Safe dildir. Bir çox proqramlaşdırma paradigmalarını tətbiq etmək olur: funksiyonal proqramlaşdırma, imperative programming, structured programming, async, generic və s. Rust dilində OOP yanaşması da biraz fərqlidir. Sonrakı dərslərdə görəcəyik. Dilin bir digər qəribəliyi garbage collector olmamasıdır. C# , Java kimi dillərdən fərqli olaraq c++-dakı kimi memory-ni özümüz idarə etməliyik. Amma Rust dilində bu o qədər çətin deyil. Əgər çətin olsaydı dünyada ən sevilən proqramlaşdırma dili olmazdı. Yəni rahat şəkildə başlaya bilərsiz. Son olaraq bir maraqlı məlumatı da deyib giriş edək. Rustda bütün dəyişənlər yəni bütün verilən tipləri immutable-dir.

Hello World yazaraq dili öyrənməyə başlayaq.

fn main() {
println!(“Hello, world!”);
}

Main funksiyası yazılışından aydın olur ki fn function sözünün qısaltmasıdır. Proqram çalışanda digər dillərdəki compilerlar kimi main funksiyasından başlayır. Burda main funksiyası dedik amma əslində main funksiya yox macrodur. Elə main yanındakı diqqətinizi çəkən “!” işarəsi də macroları funksiyalardan fərqləndirmək üçündür. Macrolar haqqında daha sonrakı dərslərdə danışacayıq. Əgər komputerinizdə Rust compileriniz yoxdursa online buradan kodları test edə bilərsiz. Komputerinizdə test etmək istəyirsinizsə bu linkdən yükləyib qura bilərsiniz.

Rustdakı tiplər Haskell funksiyonal proqramlaşdırma dilində olduğu kimi traits -dən əmələ gəlir. PHP proqramlaşdırma ilə məşğul olanlar bunu daha yaxşı başa düşəcək. Standart OOP məntiqi ilə desək interface və ya abstract classlar vasitəsilə polimorfizmdən istifadə olunaraq tiplər yaradılır. Javascriptdə olduğu kimi dəyişənləri let sözü ilə təyin edirik. Əvvəl dediyimiz kimi bütün dəyişənlər immutabledır. Ancaq dəyişəni mutable etmək mümkündür. Bunun üçün let -dən sonra mut yazmaq lazımdır. Immutable nə olduğunu tam başa düşmək üçün nümunələrə baxacayıq.

fn main() {
let x1=1; //int
let x2=”World”; //str
let x3=1.5; //float
let x4=true; //boolean
let x5=’5'; //char
let x6; //let ilə dəyər mənimsədilmədən də dəyişən yaradıla bilər
x6=1; //dəyər yazılır
println!(“Hello, {}!”,x1); //Hello World!

println!(“{}”,x2);//World
println!(“{}”,x3);//1.5
println!(“{}”,x4);//true
println!(“{}”,x5);//5
println!(“{}”,x6);//1
println!(“{}, {}, {}”,x2,x1,x3);// ok, 1, 1.5
}

Burada x1 dəyişəninə yeni dəyər mənimsədək.

fn main() {
let x1=1;
x1=5; //error
}

Nəticədə bu erroru alacayıq:”cannot assign twice to immutable variable `x1`

Çünki immutable dəyişənə sadəcə bir dəfə dəyər mənimsədə bilərik. Bunu həll etmək üçün dəyişəni mutable etmək lazımdır. Bunun üçün let sözündən sonra mut əlavə etmək lazımdır.

fn main() {
let mut x1=1;
println!(“{}”,x1);//1
x1=5;
println!(“{}”,x1);//5
}

Dəyişənləri yaradanda tiplərini özümüz də təyin edə bilərik.

fn main() {
let x1:u32=1; // int 32 bit unsigned yalniz müsbət ədədlər
let x2:&str=”ok”; // string tipi referans tipdir & işarəsi c++-dakı pointer kimi
let x3:f32=1.5; // float 32 bit
let x4:bool=true;//boolean tip
let x5:&char=&’5';//character tipi
let x6:i64;//int 64 mənfi qiymətlər də alır
let array: [i64; 4] = [5, 66, 88, 36];//array tip:i64, size:4
let tuple = (“hello”, “world”, [2,77,6],3.3,5,’f’,true);//tuple
let x7:usize=67;
x6=1;
println!(“Hello, world! {}”,x1);
println!(“{}”,x2);
println!(“{}”,x3);
println!(“{}”,x4);
println!(“{}”,x5);
println!(“{}”,x6);
println!(“{}”,array[1]);//66
println!(“{}”,tuple.1);//world
println!(“{}”,tuple.2[1]);//77
println!(“{}”,x7);//67

}

Rust Dilində bu tiplər var:

bool : boolean tipi.
char : Character tipi.
i8 : 8 bit signed integer tip
i16 : 16 bit signed integer tip
i32 : 32 bit signed integer tip
i64 : 64 bit signed integer tip
isize : Pointer-sized signed integer tipi.
u8 : 8 bit unsigned integer tip.
u16 : 16 bit unsigned integer tip.
u32 : 32 bit unsigned integer tip.
u64 : 64 bit unsigned integer tip.
usize : Pointer-sized unsigned integer tip.
f32 : 32 bit floating point tip.
f64 : 64 bit floating point tip.
array : fixed-size array, array[t; n] t tip, n size
str : String
tuple : Fərqli tipdə məlumatların saxlandığı collection
nevertype: Bir tipi yoxdu istənilən tip məlumat qəbul edə bilir

Daha ətraflı buradan baxa bilərsiz

To be continued

--

--