learn guidebook book module rust

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 a a/mod.rs y b.rs a a/b.rs Entonces puedes mod b; en a/mod.rs
  • En cambio, puede simplemente #[path = "b.rs"] mod b; en a.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