Yazılım Geliştirme
1 dakika okuma
Rust ile Sistem Programlama Giris
Rust temel kavramlari: ownership, borrowing, lifetimes ve sistem programlama ornekleri.
E
Emre Cihan Neden Rust
Bellek guvenligi garantisi, C/C++ performansi, modern dil ozellikleri. Mozilla, Linux kernel, Android ve WebAssembly icin tercih edilmekte.
Kurulum
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustc --version
cargo --version
Ownership Kurali
fn main() {
let s1 = String::from('merhaba');
let s2 = s1; // s1 artik gecersiz (move)
// println!("{}", s1); // HATA!
println!("{}", s2); // OK
// Klonlamak icin:
let s3 = s2.clone();
println!("{} {}", s2, s3); // Her ikisi gecerli
}
Borrowing ve References
fn uzunluk(s: &String) -> usize {
s.len() // Sahiplik alinmadan kullanilir
}
fn main() {
let s = String::from('merhaba');
let uzun = uzunluk(&s); // Referans gecir
println!("{}: {} karakter", s, uzun); // s hala gecerli
}
Struct ve impl
struct Dikdortgen {
en: f64,
boy: f64,
}
impl Dikdortgen {
fn alan(&self) -> f64 {
self.en * self.boy
}
fn kare_mi(&self) -> bool {
self.en == self.boy
}
}
fn main() {
let d = Dikdortgen { en: 10.0, boy: 5.0 };
println!("Alan: {}", d.alan());
println!("Kare mi: {}", d.kare_mi());
}
Hata Yonetimi
use std::fs;
use std::io;
fn dosya_oku(yol: &str) -> Result<String, io::Error> {
fs::read_to_string(yol)
}
fn main() {
match dosya_oku('config.txt') {
Ok(icerik) => println!("Icerik: {}", icerik),
Err(e) => eprintln!("Hata: {}", e),
}
// ? operatoru ile daha kisa:
// let icerik = fs::read_to_string('config.txt')?;
}
Rust'in ownership sistemi runtime hatalarini derleme zamaninda yakalar.
Paylaş:
Twitter / X
E
Emre Cihan
Sistem Yöneticisi · Maker · Elektronik Meraklısı
İlgili yazılar