Введение
В этом практическом занятии объясняется, что атрибуты crate_type и crate_name в Rust не влияют при использовании Cargo - менеджера пакетов для Rust, который широко используется для проектов на Rust.
Примечание: Если практическое занятие не задает имя файла, вы можете использовать любое имя файла, которое хотите. Например, вы можете использовать
main.rs, скомпилировать и запустить его с помощьюrustc main.rs &&./main.
Крейты
Атрибут crate_type можно использовать, чтобы сообщить компилятору, является ли крейт бинарным файлом или библиотекой (и даже какого типа библиотека), а атрибут crate_name можно использовать для установки имени крейта.
Однако важно отметить, что ни атрибут crate_type, ни атрибут crate_name не оказывают никакого эффекта при использовании Cargo - менеджера пакетов для Rust. Поскольку Cargo используется для большинства проектов на Rust, это означает, что практическое применение crate_type и crate_name относительно ограничено.
// Этот крейт - библиотека
#![crate_type = "lib"]
// Библиотека называется "rary"
#![crate_name = "rary"]
pub fn public_function() {
println!("called rary's `public_function()`");
}
fn private_function() {
println!("called rary's `private_function()`");
}
pub fn indirect_access() {
print!("called rary's `indirect_access()`, that\n> ");
private_function();
}
Когда используется атрибут crate_type, нам больше не нужно передавать флаг --crate-type в rustc.
$ rustc lib.rs
$ ls lib*
library.rlib
Резюме
Поздравляем! Вы завершили практическое занятие по Крейтам. Вы можете выполнить больше практических занятий в LabEx, чтобы повысить свои навыки.