use & Paths
use traz caminhos para o escopo. Reexporta com pub use. Prefira imports explícitos em vez de glob em código de aplicação.
Receita
use std::collections::HashMap;
use crate::config::Settings;
pub use crate::error::Error;Quando usar isso: Reduzir ruído de caminhos e criar a superfície da API pública do crate.
Exemplo de Trabalho
mod prelude {
pub use super::{Api, Client};
}
pub struct Api;
pub struct Client;
pub mod prelude;O que isso demonstra:
pub usereexporta para imports ergonômicos- Padrão de módulo Prelude
- Caminho absoluto
crate::a partir da raiz do crate
Mergulho Profundo
Paths: crate::, super::, self::, externo serde::. use a::{b, c} agrupado. Renomear as: use std::fmt::Display as FmtDisplay.
Armadilhas
- Glob
use std::collections::*- Poluição de namespace. Correção:useexplícito em libs. - Glob ambíguo - Erro de compilação em conflito. Correção: Renomear.
pub usesemver - Reexportação é um compromisso de API pública.- caminhos relativos profundos - Movimentações frágeis. Correção: Caminhos
crate::. - imports não utilizados -
rustfix/clippy.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Caminho totalmente qualificado | Uso único | Uso repetido |
| Módulo Prelude | Imports comuns | Crate minúsculo |
#[rustfmt::skip] imports | Estilo de agrupamento | fmt padrão ok |
FAQs
self vs crate?
self é a árvore de módulos atual; crate é a raiz.super?
Módulo pai.extern crate?
Edição 2018 implícita.use type alias?
pub type Result<T> = ...use aninhado?
use std::{io, io::Read};reexport macro?
`pub use` de macro_rules é complicado - `macro_export`.rust-analyzer?
Assistência de importação automática.paths da edição 2024?
Verifique a migração para mudanças de path.wasm?
Mesmas regras de módulo.test use?
testes importam o crate com `use crate::`.Relacionados
Versões do Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.