traduccion ps4 lenguaje language descargar rust

rust - ps4 - ¿Cómo incluir el módulo de otro archivo del mismo proyecto?



rust traduccion (2)

Siguiendo esta guía , creé un proyecto Cargo.

src/main.rs

fn main() { hello::print_hello(); } mod hello { pub fn print_hello() { println!("Hello, world!"); } }

que corro usando

cargo build && cargo run

y se compila sin errores. Ahora estoy tratando de dividir el módulo principal en dos, pero no puedo entender cómo incluir un módulo de otro archivo.

Mi árbol de proyectos se ve así

├── src    ├── hello.rs    └── main.rs

y el contenido de los archivos:

src/main.rs

use hello; fn main() { hello::print_hello(); }

src/hello.rs

mod hello { pub fn print_hello() { println!("Hello, world!"); } }

Cuando lo compilo con cargo build me sale

error[E0432]: unresolved import `hello` --> src/main.rs:1:5 | 1 | use hello; | ^^^^^ no `hello` external crate

Traté de seguir las sugerencias del compilador y modifiqué main.rs para:

#![feature(globs)] extern crate hello; use hello::*; fn main() { hello::print_hello(); }

Pero esto todavía no ayuda mucho, ahora entiendo esto:

error[E0463]: can''t find crate for `hello` --> src/main.rs:3:1 | 3 | extern crate hello; | ^^^^^^^^^^^^^^^^^^^ can''t find crate

¿Hay un ejemplo trivial de cómo incluir un módulo del proyecto actual en el archivo principal del proyecto?

Además, estoy ejecutando Rust 1.37.0.


Necesita el archivo mod.rs en su carpeta. Rust by Example lo explica mejor.

$ tree . . |-- my | |-- inaccessible.rs | |-- mod.rs | |-- nested.rs `-- split.rs

main.rs

mod my; fn main() { my::function(); }

mod.rs

pub mod nested; //if you need to include other modules pub fn function() { println!("called `my::function()`"); }


No necesita el mod hello en su archivo hello.rs . El código en cualquier archivo que no sea la raíz del cajón ( main.rs para ejecutables, lib.rs para bibliotecas) se lib.rs automáticamente en un módulo.

Para incluir el código de hello.rs en su main.rs , use mod hello; . Se expande al código que está en hello.rs (exactamente como lo había hecho antes). La estructura de su archivo continúa igual, y su código debe modificarse ligeramente:

main.rs :

mod hello; fn main() { hello::print_hello(); }

hello.rs :

pub fn print_hello() { println!("Hello, world!"); }