Son birkaç yıl içinde Rust, bir Mozilla çalışanının laboratuvarında gelişen bir meraktan, yeni nesil yerel uygulamalar ve çıplak donanım çözümleri için güçlü bir rakip haline geldi. Bu ilerlemeler, Rust’ın kendi araç zincirini ve bileşen yönetim sistemini, bazı popüler özellikler ve garipliklerle birlikte sağlamasından kaynaklanmaktadır.
Bu makale, Rust’ta yeni olan veya Rust’u gelecekteki projeleri için kullanmayı düşünen geliştiriciler içindir. Rust’ta bir çalışma ortamı kurmayı, bir IDE yapılandırmayı ve Rust’ın mükemmel uygulama geliştirme araç setinden en iyi şekilde yararlanmayı ele alacağız.
Rust sürümlerini anlama
Rust’ın araç zinciri öncelikle Rust derleyicisinden oluşur. rustc
, bir Rust kurulumunu yönetmek için araçlarla birlikte. Rust sürekli geliştirilme aşamasında olduğundan, araç zinciri kolayca güncellenebilecek şekilde tasarlanmıştır.
Kodun kararlı ve beta sürümlerini ayırmak için yazılım projeleri genellikle birden çok kanal aracılığıyla sağlanır. Rust da aynı şekilde çalışır ve araç zinciri güncellemeleri için üç kanal sunar:
- Kararlı: Her altı haftada bir çıkan önemli nokta bültenleri.
- Beta: Daha sık ortaya çıkan bir sonraki ana nokta sürümü için adaylar.
- Her gece: Son teknoloji özelliklere erişime sahip, ancak kararlılık garantisi olmayan en hızlı yapı.
geliştirici Karol Kuczmarski olarak işaret etti, her gece yayınlanan Rust kanalını kendi dili olarak düşünmek en iyisidir. Bazı Rust özellikleri yalnızca gece kanalında mevcuttur ve yalnızca özel derleyici yönergeleri ile etkinleştirilebilirler. Başka bir deyişle, beta veya kararlı kanallarda derleme bile yapmazlar.
Bu, tasarım gereğidir, çünkü gecelik özelliklerin başka hiçbir yerde destekleneceğinin garantisi yoktur. Bununla birlikte, bu özelliklerin çoğu sonunda gece kanalından çıkıp beta ve kararlı sürümlere dönüşür. (Örneğin, WebAssembly’a derleme, Rust 1.30’dan itibaren kararlı sürümde çalışır.)
Bir geliştirici olarak bu sizin için ne anlama geliyor? Kısacası:
- Kullanmak kararlı gerçek üretim çalışması için.
- Kullanmak beta yükseltme sırasında herhangi bir şeyin bozulup bozulmayacağını görmek için mevcut yazılımı gelecek sürümlerle test etmek için.
- Sadece kullan her gece Rust’ın en yeni özellikleriyle korumalı alan deneyleri için.
Rust geliştirme için bir işletim sistemi seçin
Pas üç ana platformun tümünü destekler—Windows, Linux ve macOS—her biri için resmi ikili dosyalarla hem 32 hem de 64 bit enkarnasyonlarda. Bir dizi başka platform da resmi ikili dosyalara sahiptir, ancak aynı düzeyde otomatikleştirilmiş test kapsamına sahip değildirler. Bu ikinci sınıf platformlar arasında iOS, Android ve Linux için ARMv6 ve ARMv7; MIPS Linux ve MIPS64 Linux; x86 iOS, Windows ve Linux’un 32 bit sürümleri; ve WebAssembly. Windows XP veya deneysel HaikuOS gibi diğer platformlar, resmi olmayan yapılar aracılığıyla desteklenir.
Rust’ın geliştirme ekibi, geniş çapta taşınabilir olmanın Rust’ın görevlerinden biri olmadığını belirtti. Örneğin, Rust birçok ARM mimarisinde mevcut olmasına rağmen, Rust’ın düşük kaliteli donanım platformlarında resmi olarak destekleneceğine dair bir garanti yoktur.
Bununla birlikte, yaygın, ana akım kullanım durumlarının (32 ve 64 bit Windows, Linux ve macOS) büyük çoğunluğu için desteklenen bir Rust derlemesi olmalıdır.
Eğer planlıyorsan Windows’ta Rust’ta geliştirme, alet zincirlerinizi aklınızda bulundurun. Rust, iki Windows araç zincirini destekler:
- Yerel Microsoft Visual C (MSVC) ABI
- GCC bağlayıcısı tarafından kullanılan Gnu ABI
Windows’ta yerleşik olan hemen hemen tüm C/C++ yazılımları zaten MSVC kullandığından, çoğu zaman MSVC araç zincirini kullanmak isteyeceksiniz. GCC’ye ihtiyacınız olursa, bu büyük olasılıkla Windows’ta yerleşik üçüncü taraf kitaplıklarla GCC ile birlikte çalışmak için olacaktır.
İyi haber şu ki, Rust’ın araç zinciri yönetim sistemi hem MSVC’yi hem de ve GCC araç zincirleri kuruludur ve bunlar arasında proje bazında geçiş yapmanızı sağlar.
Rust’ın derleme hedeflerinden biri WebAssembly’dir, yani Rust’ta yazabilir ve bir web tarayıcısına konuşlandırabilirsiniz. WebAssembly’nin kendisi ve Rust’un desteği de hâlâ uç noktalarda. Ama hırslıysan ve ellerini dağıtmak istiyorsan, bu kitabı okuWebAssembly’ı Rust’a derleme sürecini ayrıntılarıyla anlatan. Rust ve WebAssembly mühendisleri tarafından yazılan kitap, Conway’in Rust’ta yazılan ve WebAssembly olarak konuşlandırılan Game of Life’ın uygulanması için bir öğretici içerir.
Rust kurulumunuzu rustup ile başlatın
Rust, hepsi bir arada yükleyici ve araç zinciri bakım sistemi sağlar. rustup
. rustup’ı indir ve çalıştırın; Rust araç zincirinin en son sürümlerini alacak ve sizin için yükleyecektir.
Bakımı yapılan en kritik araçlar rustup
bunlar:
rustup
kendisi: Ne zaman yeni sürümlerrustup
veya diğer araçlar yayınlanır, sadece çalıştırabilirsinizrustup update
ve her şeyin otomatik olarak güncellenmesini sağlayın.rustc
: Rust derleyicisi.- Kargo: Rust’ın paket ve çalışma alanı yöneticisi.
Varsayılan olarak, rustup
kararlı kanaldan Rust’ı yükler. Beta veya gecelik sürümleri kullanmak istiyorsanız, bu kanalları manuel olarak (örneğin, çalıştırarak) yüklemeniz gerekir. rustup install nightly
) ve Rust’ı bunları varsayılan olarak kullanacak şekilde ayarlayın (rustup default nightly
). ayrıca yapabilirsin hangi kanalın kullanılacağını manuel olarak belirtin bir Rust uygulamasını derlerken, böylece projeler arasında her geçişinizde varsayılanı ayarlayıp sıfırlamanız gerekmez.
Şekil 1. rustup
Rust araç zincirinizin tüm parçalarını en son sürümlerine güncel tutar. Burada, son teknoloji ve potansiyel olarak kararsız dil bileşenlerine sahip gecelik araç zinciri, kararlı sürümden ayrı olarak güncelleniyor.
Ayrıca kullanabilirsin rustup
özel araç zincirlerini kurmak ve sürdürmek için. Bunlar, genellikle kendi bağlayıcılarını veya platforma özgü diğer araçları gerektiren, desteklenmeyen platformlar için Rust’ın resmi olmayan üçüncü taraf yapıları tarafından kullanılır.
Rust’ın yaptığı başka bir varsayılan varsayımın, Kargo dosyalarını (indirilen paketler ve yapılandırma bilgileri) kullanıcı profilinizin bir alt dizininde depolaması olduğunu unutmayın. Bu her zaman arzu edilen bir durum değildir; bazen insanlar bu verileri daha fazla yer olan başka bir sürücüde veya daha erişilebilir bir yerde isterler. Kargo’nun başka bir yerde yaşamasını istiyorsanız, kurulum tamamlandıktan sonra manuel olarak yeniden yerleştirebilirsiniz. İşte adımlar:
- Cargo kullanıyor olabilecek tüm programları kapatın.
- Kopyala
.cargo
kullanıcı profilinizdeki dizini, yaşamasını istediğiniz yere. - Ortam değişkenlerini ayarlayın
CARGO_HOME
veRUSTUP_HOME
yeni dizini işaret etmek için. - Yı kur
PATH
işaret etmekbin
yeni dizinin alt dizini. - Tip
cargo
Kargonun düzgün çalıştığından emin olmak için.
IDE’nizi Rust için yapılandırın
Rust nispeten yeni bir dil olmasına rağmen, şimdiden birçok yaygın IDE’den güçlü destek aldı. Geliştirici Manuel Hoffman, web sitesinde bu tür bir desteğin durumunu izlemek için bir proje yürütüyor areweideyet.com.
Rust’ın IDE’lerle iyi çalışmasını sağlamak, Rust Dil Sunucusu (RLS) adı verilen bir özellik aracılığıyla geliştirme ekibinin açık bir hedefidir. RLS, söz konusu kod hakkında üçüncü taraf ayrıştırıcı yerine Rust’ın kendi derleyicisinden canlı geri bildirim sağlar.
Şekil 2. Rust’ın Dil Sunucusu projesi, üzerinde çalıştığınız kod için Rust derleyicisinden bir IDE’ye canlı geri bildirim sağlar. Burada gösterilen Visual Studio Code, Rust Dil Sunucusu için mevcut en eksiksiz desteklerden bazılarına sahiptir.
İşte Rust’u destekleyen IDE’ler:
İlk Rust projenizi oluşturun
Rust projeleri, içlerinde belirli şekillerde saklanan kod ve proje meta verileriyle tutarlı bir dizin yapısına sahip olmak içindir. Kod bir yerde saklanır src
alt dizin ve proje ile ilgili ayrıntılar, projenin kök dizinindeki iki dosyada saklanır, Cargo.toml
(projenin temel bilgileri) ve Cargo.lock
(otomatik olarak oluşturulmuş bir bağımlılık listesi). Bu dizin yapısını ve meta verileri elle oluşturabilirsiniz, ancak işi yapmak için Rust’ın kendi araçlarını kullanmak daha kolaydır.
Rust’ın Kargo aracı hem Rust projelerini hem de kullandıkları kitaplıkları veya “kasaları” yönetir. adlı yeni bir Rust projesini başlatmak için my_project
kendi dizinine yazın cargo new my_project
. (.Net Core ile çalışan C# geliştiricileri için şunu düşünün: dotnet new
komutu.) Yeni proje, temel bir proje bildirimiyle birlikte bu ada sahip bir alt dizinde görünür; Cargo.toml
dosyası—ve projenin kaynak kodu için bir saplama src
alt dizin.
Yeni bir proje oluşturduğunuzda, bir main.rs
dosyası projenin içinde otomatik olarak oluşturulur. src
dizin. Bu dosya temel bir “merhaba dünya” uygulaması içerir, böylece Rust araç zincirinizi derleyip çalıştırarak hemen test edebilirsiniz.
İşte bu temel “merhaba dünya” uygulamasının kaynak kodu:
fn main() {
println!(“Hello World!”);
}
Uygulamayı oluşturmak ve çalıştırmak için proje dizininin köküne gidin ve şunu yazın: cargo run
. Cargo’nun varsayılan olarak projeleri şu şekilde oluşturduğunu unutmayın: hata ayıklamak mod. Serbest bırakma modunda çalıştırmak için şunu kullanın: cargo run --release
. İkili dosyalar, projenin target/debug
veya target/release
kullandığınız derleme profiline bağlı olarak alt dizin.
Şekil 3. Bir Rust projesi derlendiğinde tüm bağımlılıkları da otomatik olarak alınır ve derlenir. Bir uyarıya veya tam bir hataya neden olan herhangi bir şey için ayrıntılı satır satır geri bildirim görüntülenir.
Rust kasalarıyla çalışın
Paket yönetimi, herhangi bir modern programlama ortamının önemli bir parçasıdır. Bu amaçla Rust, Rust’ın araçlarıyla dağıtım için paketlenmiş üçüncü kişi kitaplıkları olan “kasalar” sağlar. Kasaları resmi Rust paketi kayıt defterinde bulabilirsiniz. Crates.io.
Projenizin belirli bir kasaya bağımlılığı varsa, o sandığı şu şekilde belirtmeniz gerekir: projenin Cargo.toml dosyasını düzenleme. Bunu yapmanın standart yolu manueldir; yani basitçe düzenleyerek Cargo.toml
doğrudan bir metin editörü ile. Proje yeniden oluşturulduğunda, Rust gerekli tüm bağımlılıkları otomatik olarak alır.
Harici kasalara bağlı bir Rust projesi oluşturduğunuzda, Cargo bu kasaları arar. Crates.io varsayılan olarak; bunları manuel olarak almanıza gerek yoktur. Kayıt defterinde barındırılmayan bir kasaya, örneğin özel bir depodan ihtiyacınız olması durumunda, projenizdeki kasalara sandık adı yerine URL ile de başvurabilirsiniz.
Bazı kasaların sadece diğer kanallarda bulunmayan deneysel özellikleri kullandıkları için Rust’ın gece kanalına kurun ve oluşturun. Sürüm kanalındaysanız ve böyle bir kasa kurmaya çalışırsanız, derleme başarısız olana kadar herhangi bir uyarı almazsınız. Sandık belgeleri genellikle gece kanalını gerektirip gerektirmediğinden bahseder, bu nedenle bırakın derlemeyi, dahil etmeden önce okuyun.
Kasalar dahil ikili dosyalar ile gelebilir. Bazıları, Rust geliştirmede kullanılan komut satırı araçlarıdır; diğerleri genel amaçlı araçlardır (örneğin ripgrep). Bu kasalardan birini takmak için şunu yazmanız yeterlidir: cargo install <crate name>
. bu değil sadece Rust ile oluşturulan bir ikili dosyayı dağıtmanın bir yolu, ancak Rust geliştiricilerinin bunları Rust araçlarını içeren bir iş akışının parçası olarak edinmeleri için uygun bir yoldur.
Rust’ı başka bir platforma çapraz derleme
Rust, aynı Rust kurulumunda bile birden fazla araç zincirini desteklediğinden, Rust uygulamalarını üzerinde derlediğinizden farklı bir hedef işletim sistemi ve ortama derleyebilirsiniz.
Bu tür bir çapraz derleme, üzerinde çalıştığınız platformda hedef platformla eşleşen bir araç zinciri gerektirir. Bazen, Windows’ta Linux’a çapraz derlemede olduğu gibi veya tersi, bu GCC bağlayıcıya sahip olmaktan biraz daha fazlasını içerir. Ancak diğer zamanlarda, daha karmaşıktır. İçin macOS’ta çapraz derlemeörneğin, işi bitirmek için Xcode IDE kitaplıklarına ihtiyacınız var—cctools
(Apple’ın eşdeğeri binutils
) ve macOS SDK’sı.
Üçüncü taraf araçlar, bu zorlukların üstesinden gelmenin bazı yollarını sunar:
Kaynak : https://www.infoworld.com/article/3234929/rust-tutorial-get-started-with-the-rust-language.html#tk.rss_all