Ana içeriğe geç

Bir I/O Projesi: Bir Komut Satırı Programı Oluşturma

Bu bölüm, şimdiye kadar öğrenmiş olduğunuz birçok becerinin bir özeti ve birkaç standart kütüphane özelliğinin keşfi. Dosya ve komut satırı girdi/çıktısıyla etkileşime giren bir komut satırı aracı oluşturacağız ve artık sahip olduğunuz bazı Rust kavramlarını pratik etme imkanı bulacağız.

Rust’ın hızı, güvenliği, tek ikili çıktı ve çoklu platform desteği, komut satırı araçları oluşturmak için ideal bir dil yapar; bu yüzden projemiz için klasik komut satırı arama aracı grep'in kendi versiyonunu yapacağız (global regüler ekspresyonu arar ve print eder). En basit kullanım durumunda, grep belirli bir dosyada belirli bir dizeyi arar. Bunu yapmak için, grep bir dosya yolu ve bir dizeyi argüman olarak alır. Daha sonra dosyayı okuyarak, dize argümanını içeren dosyadaki satırları bulur ve o satırları yazdırır.

ipucu

Öneri: Komut satırı aracını oluştururken, kullanıcı deneyimini artırmak için komut satırı argümanlarını dikkatlice düşünün.

Bu süreçte, komut satırı aracımızın birçok diğer komut satırı aracının kullandığı terminal özelliklerini nasıl kullanacağını göstereceğiz. Kullanıcının aracımızın davranışını yapılandırmasına olanak tanımak için bir ortam değişkeninin değerini okuyacağız. Ayrıca, başarılı çıktıyı bir dosyaya yönlendirebilecek bir kullanıcı görsel hata mesajlarını ekranında görebilsin diye hata mesajlarını standart çıktı (stdout) yerine standart hata konsol akışına (stderr) yazdıracağız.

“Rust topluluğundan bir üye olan Andrew Gallant, çok hızlı ve tam özellikli bir grep versiyonu olan ripgrep'i zaten oluşturdu.”
— Andrew Gallant

grep projemiz, şu ana kadar öğrendiğiniz bir dizi kavramı birleştirecek:

bilgi

Ek Bilgi: Ayrıca kapamalar, yineleyiciler ve trait nesneleri hakkında kısa bir tanıtım yapacağız; bu konular Bölüm 13 ve Bölüm 18 kapsamında detaylı olarak ele alınacaktır.

Ayrıca kapamalar, yineleyiciler ve trait nesneleri hakkında kısa bir tanıtım yapacağız; bu konular Bölüm 13 ve Bölüm 18 kapsamında detaylı olarak ele alınacaktır.