Rust Dili Nedir ?

kondanta

Katılımcı Üye
29 Tem 2017
910
0
CNCF

Sizlere kısaca Rustdan bahsetmek istiyorum. Şuanın parlayan bir yıldızı olan Rust'ı C++'ın bir üst versiyonu olarak da görebilirsiniz. Amacı tamamen güvenlik öncelikli, daha performanslı bir sistem dili olabilmek olan Rust, syntaxı C++ ve GO'nun birleşiminden oluşmakta.

Kod:
fn main() {
    let msg = "Param!";
    println!("Hello {}", msg);
}

Rust'ın şuan en popüler kütüphanesi actix-web, bir web backend kütüphanesi. Performansı bi hayli göz doldurmakta. Var olan benchmark testlerinde https://www.techempower.com/benchmarks/ sitesinden ulaşabilirsiniz. Daha detaylı benchmark testleri için google her zaman emrinize amade zaten.

Rust'ı C++ dan farklı kılan bir diğer (ve rustın satış noktası) compilerı. O kadar tatlı bir compilera sahip ki, hata yaptığınızda size nerde hata yaptığınızı değil, nasıl düzelteceğinizi de söylüyor.
Kod:
error[E0277]: the trait bound `Person: std::fmt::Debug` is not satisfied
  --> struct2.rs:23:21
   |
23 |     println!("{:?}", p);
   |                     ^ the trait `std::fmt::Debug` is not implemented for `Person`
   |
   = note: `Person` cannot be formatted using `:?`; if it is defined in your crate,
    add `#[derive(Debug)]` or manually implement it
   = note: required by `std::fmt::Debug::fmt`

Bir diğer ve farklı konspet ise, değişken ödünç alma. Rust içerisinde referans odaklı bir sahiplik sistemi barındırmakta. Bu sahiplik sistemi, örneğin let s = "Test"; s memoryde allocate edildikten sonra ownerı belirlenir. Yani bu noktadan sonra, ownerı harici bir şekilde değiştirmediğiniz sürece -takes_ownership(s); // s's value moves into the function...-
s'in değerini değiştiremezsiniz. Buda dolaylı yoldan bize memory safety, yani C++'ın verdiği SIGSEV segment hatalarının önüne geçmemizi sağlıyor. Tabi ki, unsafe" keywordu ekleyerek bu hatayı rustda da alabiliriz, ama compilerın default versiyonu bu olayı engelliyor.

Rust nerde kullanılıyor derseniz, en önemli kısmı Windowsun azure sisteminin bir kısmının rust ile tekrardan yazılması ve mozillanın core C++ kütüphanalerini rusta taşıması örnek olarak gösterilebilir. Rust da c++ gibi öğrenmesi başlangıçta zor olan bir dil, 2 günde öğrenirim diye düşünmeyin.

Şahsi fikrim sorulursa, ilerde C++'ın yerine geçmesini beklediğim bir dil. Özellikle C++20 de hala doğru düzgün package managerı olmaması, modül sisteminin ekleneceğinin garantisi olmaması da buna büyük bir etken olacaktır. Package manager demişken, Rust Cargo adlı bir paket yöneticisine sahip. Mutlaka denemenizi tavisye ediyor, konuyu bir satır rust kodu ile noktalıyorum.

Kod:
fn foo2() -> impl Future<Item=String, Error=()> {
    future::ok(()).and_then(|()| future::ok("Byes") )
}


 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.