module - guidebook - ¿Cómo usar un módulo de otro módulo en un proyecto de carga Rust?
rust guidebook (2)
Para Rust versión 1.33, el método hermano de la respuesta aceptada no funcionará para mí.
En cambio, he usado mod hermano como esto:
use crate::b;
Editar: caja de palabras mal escritas
Hay mucha documentation de Rust sobre el uso de módulos, pero no he encontrado un ejemplo de un binario de Cargo que tenga múltiples módulos, con un módulo usando otro. Mi ejemplo tiene tres archivos dentro de la carpeta src. Los módulos ayb están en el mismo nivel. Uno no es un submódulo de otro.
main.rs:
mod a;
fn main() {
println!("Hello, world!");
a::a();
}
a.rs:
pub fn a() {
println!("A");
b::b();
}
y b.rs:
pub fn b() {
println!("B");
}
He intentado variaciones de
use b
y
mod b
dentro de a.rs, pero no puedo obtener este código para compilar.
Si trato de usar el
use b
, por ejemplo, aparece el siguiente error:
--> src/a.rs:1:5
|
1 | use b;
| ^ no `b` in the root. Did you mean to use `a`?
¿Cuál es la forma correcta de hacer que Rust reconozca que quiero usar el módulo b del módulo a dentro de una aplicación de carga?
Tendrá que incluir
b.rs
alguna parte, generalmente con
mod b;
.
Si
b
es hijo de
a
(en lugar de ser hermano de
a
), hay dos formas de hacerlo:
-
Recomendado
: cambie el nombre de
a.rs
aa/mod.rs
yb.rs
aa/b.rs
Entonces puedesmod b;
ena/mod.rs
-
En cambio, puede simplemente
#[path = "b.rs"] mod b;
ena.rs
sin renombrar fuentes.
Si
b
está destinado a ser hermano de
a
(en lugar de ser hijo de
a
), puede simplemente
mod b;
en
main.rs
y luego
use crate::b;
main.rs
use crate::b;
en
a.rs