Bağımlılıklar
Çoğu programın bazı kütüphanelere bağımlılıkları vardır. Hiç bağımlılıkları elle yönettiyseniz, bunun ne kadar acı verici olabileceğini tahmin edersiniz. Şanslıyız ki, Rust ekosistemi cargo
ile standart olarak geliyor! cargo
bir proje için bağımlılıkları yönetebilir.
Yeni bir Rust projesi oluşturmak için,
# A binary
cargo new foo
# OR A library
cargo new --lib foo
Bu bölümün geri kalanı için, bir kütüphane yerine bir ikili yaptığımızı varsayalım, ama tüm kavramlarımız aynı.
Yukarıdaki komutlardan sonra, aşağıdaki gibi bir dosya hiyerarşisi görmelisiniz:
foo
├── Cargo.toml
└── src
└── main.rs
main.rs
yeni projenizin root(kök/ana) kaynak dosyasıdır -- yeni bir şey yoktur.
Cargo.toml
bu proje için cargo
yapılandırma dosyasıdır (foo
). İçine bakarsanız, şuna benzer bir şey görürsünüz:
[package]
name = "foo"
version = "0.1.0"
authors = ["mark"]
[dependencies]
name
alanı [package]
altındaki projenin adını belirler. Crate'i yayınlarsanız crates.io
tarafından kullanılır(daha sonra anlatılacaktır). Ayrıca, derlediğinizde çıktı ikilisinin de adıdır.
version
alanı Semantic Versioning(Anlamsal Sürümlendirme) kullanan crate sürüm numarasıdır.
authors
alanı, crate'i yayınlarken kullanılan yazarların listesidir.
[dependencies]
alanı projenize bağımlılık eklemenizi sağlar.
Örneğin, programınızın harika bir komut satırı arayüzüne sahip olmasını istediğinizi varsayalım. crates.io (resmi Rust paket kayıtları)'da bir sürü güzel paket bulabilirsiniz. Popüler bir seçim clap'tir.
Bu yazı boyunca, clap
'in en son sürümü 2.27.1
'dir. Programımıza bir bağımlılık eklemek için,
Cargo.toml
dosyamızda [dependencies]
: clap = "2.27.1"
şeklinde basitçe ekleriz. İşte budur! Artık programınızda
clap
kullanmaya başlayabilirsiniz.
cargo
bağımlılıkların özel tipleri. Ufak bir özetleme:
[package]
name = "foo"
version = "0.1.0"
authors = ["mark"]
[dependencies]
clap = "2.27.1" # from crates.io
rand = { git = "https://github.com/rust-lang-nursery/rand" } # from online repo
bar = { path = "../bar" } # from a path in the local filesystem
cargo
bir bağımlılık yöneticisinden daha fazlasıdır. Mevcut tüm konfigürasyon seçenekleri
Cargo.toml
'deki format belirleyicide listelenmiştir.
Projemizi oluşturmak için, proje dizininde herhangi bir yerde (alt dizinler de dahil!) cargo'yu çalıştırırız. Aynı zamanda cargo run
diyerek de build edip çalıştırabiliriz. Bu komutların tüm bağımlılıkları çözeceğine, gerekirse crate'leri indireceğine ve crate'iniz de dahil her şeyi oluşturacağını unutmayın! (Çoktan build edilmiş bir şeyi tekrar build ettiğini unutmayın make
'e benzer şekilde).
İşte! Hepsi bu kadar!