Атрибуты Cargo в разработке на Rust

RustRustBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии объясняется, что атрибуты 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, чтобы повысить свои навыки.