Atributos de Módulos no Desenvolvimento em Rust

Beginner

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

Introdução

Neste laboratório, é explicado que os atributos crate_type e crate_name em Rust não têm efeito quando se utiliza o Cargo, o gestor de pacotes Rust, amplamente utilizado em projetos Rust.

Nota: Se o laboratório não especificar um nome de ficheiro, pode utilizar qualquer nome de ficheiro que desejar. Por exemplo, pode utilizar main.rs, compilá-lo e executá-lo com rustc main.rs && ./main.

Módulos

O atributo crate_type pode ser usado para indicar ao compilador se um módulo é um binário ou uma biblioteca (e até que tipo de biblioteca), e o atributo crate_name pode ser usado para definir o nome do módulo.

No entanto, é importante notar que os atributos crate_type e crate_name não têm nenhum efeito quando se utiliza o Cargo, o gestor de pacotes Rust. Uma vez que o Cargo é usado na maioria dos projetos Rust, isto significa que os usos reais de crate_type e crate_name são relativamente limitados.

// Este módulo é uma biblioteca
#![crate_type = "lib"]
// A biblioteca é chamada "rary"
#![crate_name = "rary"]

pub fn public_function() {
    println!("chamada da função `public_function()` de rary");
}

fn private_function() {
    println!("chamada da função `private_function()` de rary");
}

pub fn indirect_access() {
    print!("chamada da função `indirect_access()` de rary, que\n> ");

    private_function();
}

Quando o atributo crate_type é usado, não precisamos mais de passar a flag --crate-type para o rustc.

$ rustc lib.rs
$ ls lib*
library.rlib

Resumo

Parabéns! Concluiu o laboratório de Módulos. Pode praticar mais laboratórios no LabEx para melhorar as suas competências.