Rust: алғашқы қадамнан жеке жоспарлау құралына дейін 48-сабақ (барлығы 55)
Сыртқы кітапханалар мен тәуелділіктер
48-сабақ. Кітапхананы орнымен қосып, жобаға не енгенін тексеру.
Мәтін ИИ көмегімен аударылды.
Алдын ала: Cargo және модульдер. Ұйымдастырғыш жобасын бөлек сақтаңыз: төменде шағын оқу жобасы бар. Алғашқы іске қосуға желі қажет емес.
Таныс бейне және тірек сызба
Велосипедке дайын бөлшек алсаңыз, оның өлшемін, жасаушысын және орнату жолын қарайсыз. Тәуелділік — өз жобамызға қосылған кітапхана. Крейт (crate) — Rust коды мен оны құрастырудың бірлігі; crates.io — осындай кітапханалардың ашық тізімі. Ұқсатудың шегі: кітапхана коды біздің бағдарламаның мүмкіндіктерімен орындалады; тізімдегі орын мен нұсқа нөмірі оның сапасы мен қауіпсіздігін дәлелдемейді.
қажет іс → кітапхана мен рұқсат шартын таңдау → Cargo.toml жазбасы → Cargo.lock-тағы нақты таңдау → құрастыру мен тексеру. Cargo.toml жобаға қандай тәуелділіктерді алуға болатынын жазады. Cargo.lock қолданба үшін таңдалған нақты нұсқаларды бекітеді. version = "1.2" жолы сәйкес келетін нұсқаны таңдау шарты, міндетті түрде жүктелген нақты нұсқа емес. Кітапхана бетіндегі және бастапқы кодындағы license пайдалану шартын көрсетеді: бағдарламаны таратпас бұрын оны оқыңыз. cargo add тәуелділікті жазады, cargo tree қосылған кітапханалар тізбегін көрсетеді. crates.io-дан алғашқы рет алу үшін желі керек. Әуелі өзіміздің шағын кітапханамызды жолы арқылы қосып үйренеміз.
Алдымен бір файлдағы қызметті іске қосыңыз
fn label(title: &str) -> String {
format!("[{title}]")
}
fn main() {
println!("{}", label("Кездесу"));
}
[Кездесу]
Бұл мысалда тәуелділік жоқ: label атауға жақша қосады. Келесі қадамда оны бөлек крейтке көшіреміз. Сонда src/main.rs кітапхананы қолданады. Cargo.toml ішіндегі path — жергілікті крейтке апарар жол; бұл оны crates.io-ға жарияламайды.
Бетке қарамай жауап беріңіз
Cargo.tomlішіндегі нұсқа шарты менCargo.lockішіндегі нақты нұсқаның айырмасы қандай?- Басқа автордың кодын қоспас бұрын рұқсат шарты мен құжаттаманы неге оқу керек?
pathтәуелділігі неге желісіз жұмыс істейді?
Тапсырма
Міндетті. Әуелі осы мысалға label("Жоспар") деген екінші шақыру қосыңыз. Содан кейін қолданба бумасының жанынан organizer_label оқу кітапханасын жасаңыз: cargo new --lib organizer_label --vcs none кітапхана жобасын бөлек Git қоймасынсыз жасайды. label қызметін organizer_label/src/lib.rs файлына көшіріп, сырттан шақыру үшін fn алдына pub қойыңыз. Қолданбаның Cargo.toml файлының [dependencies] бөлігіне organizer_label = { path = "../organizer_label" } жазыңыз. main.rs ішінде organizer_label::label деп шақырыңыз. cargo new пәрменін екі жобаның ортақ ата-аналық бумасында, ал cargo run --offline пәрменін қолданба бумасында орындаңыз. Екі жолды тексеріңіз.
Жауаптар
Жауаптарды көрсету
Егер cargo new буманың бұрыннан барын айтса, оқу кітапханасына басқа атау таңдаңыз. lib.rs ішінде main болмайды; қызмет pub fn label(title: &str) -> String түрінде жазылады. Негізгі файлда шақыру тәуелділік атауынан басталады.
fn label(title: &str) -> String {
format!("[{title}]")
}
fn main() {
println!("{}", label("Кездесу"));
println!("{}", label("Жоспар"));
}
[Кездесу]
[Жоспар]
Кітапханаға көшіргеннен кейінгі толық нәтиже
organizer мен organizer_label бумалары қатар орналасады. organizer_label/Cargo.toml файлын cargo new --lib жасайды; бума атауы пакет атауымен бірдей болсын. organizer_label/src/lib.rs ішінде:
pub fn label(title: &str) -> String {
format!("[{title}]")
}
organizer/Cargo.toml ішіндегі [package] бөлігін сақтап, [dependencies] бөлігіне мына жолды қосыңыз:
organizer_label = { path = "../organizer_label" }
organizer/src/main.rs:
fn main() {
println!("{}", organizer_label::label("Кездесу"));
println!("{}", organizer_label::label("Жоспар"));
}
[Кездесу]
[Жоспар]
Тексергеннен кейін
Жергілікті крейтті тексерген соң қажет кітапхананы crates.io-дан іздеңіз: құжаттамасын, нұсқасын, рұқсат шартын, жаңартылған күнін және қосымша тәуелділіктерін қараңыз. Нақты қажет кезде cargo add АТАУЫ манифестке жазады әрі бекітілген нұсқалар файлын жаңартады; cargo tree байланысын көрсетеді. Кітапхананы тек жаттығу үшін қоспаңыз. Қолданбаның Cargo.lock файлын Git-те сақтаңыз. Тәуелділіктер жөніндегі ресми Cargo нұсқаулығы.
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.