use
- Rust kursu
- Orta seviye
- Ders 72/115
- 4 dk
use ile modüldeki isimleri içe aktarırsın.
use
use, bir yolu kapsama alarak uzun yazımı kısaltır. Gelenek: fonksiyonlar için üst modülü, türler için türün kendisini almak:
use std::collections::HashMap; // tür: kendisi
use sekil::kare; // fonksiyon: üst modül
let m: HashMap<&str, i32> = HashMap::new();
let a = kare::alan(3.0); // nereden geldiği belliAd çakışmasında as ile yeniden adlandırılır: use sekil::daire::alan as daire_alan;.
İç içe yollar
Aynı kökten birden çok öğe tek satırda alınabilir:
use std::collections::{BTreeMap, HashMap, HashSet};
use std::fmt::{self, Display};
mod sekil {
pub mod daire {
pub fn alan(r: f64) -> f64 { std::f64::consts::PI * r * r }
}
pub mod kare {
pub fn alan(a: f64) -> f64 { a * a }
}
}use bildirimi yalnızca yazıldığı kapsamda geçerlidir; bir modülün içinde kullanılacaksa o modülde ayrıca yazılmalıdır.
Uygulama Kısa yollar
Yukarıdaki sekil modül ağacını yaz. daire::alan'ı daire_alan adıyla, kare modülünü ise kendi adıyla use et. daire_alan(1.0) ve kare::alan(3.0) sonuçlarını {:.2} ile boşlukla yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
mod sekil {
pub mod daire {
pub fn alan(r: f64) -> f64 {
std::f64::consts::PI * r * r
}
}
pub mod kare {
pub fn alan(a: f64) -> f64 {
a * a
}
}
}
use sekil::daire::alan as daire_alan;
use sekil::kare;
fn main() {
println!("{:.2} {:.2}", daire_alan(1.0), kare::alan(3.0));
}Beklenen çıktı
3.14 9.00
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>use std::io::{self, Write};</code> neyi kapsama alır?
- Derlenmez
- io modülünü ve Write trait'ini Doğru cevap
- Yalnızca Write'ı
- io içindeki her şeyi
Açıklama: Süslü parantez birden çok yolu birleştirir; self o modülün kendisidir. Tümünü almak için io::* yazılır (glob), ama genelde önerilmez.
2 Yeniden adlandır
use sekil::daire::alan ____ daire_alan;
use sekil::daire::alan as daire_alan;
Açıklama: as, kapsama alınan öğeye yeni bir ad verir.
3 use bildirimi ve etkisi
| Kavram | Anlamı |
|---|---|
use sekil::kare; |
kare::alan yazılır |
use sekil::daire::alan as daire_alan; |
daire_alan(..) |
use std::io::{self, Write}; |
io ve Write |
use std::io::*; |
Glob içe aktarma |