Document how to use external modules?
Is it possible to use external modules? If yes, then it may make sense to document how.
Example:
% cat ./main.rs
mod other;
fn main() {
other::hello();
}
% cat ./other.rs
pub fn hello() {
println!("How are you?");
}
For comparison, cargo-play handles it like this. I can run the aforementioned two modules via cargo play *.rs
Is it possible to use external modules?
It's not currently possible, but looks interesting. Experimenting with it.
Related, it's possible to "include" another rust file, with something like:
include!(concat!(env!("RUST_SCRIPT_BASE_PATH"), "/utils.rs"));
call_function_defined_in_utils_rs();
It's not the same thing as modules and a bit verbose, but it can sometimes be useful.
It is also possible to use local crates. Something like:
my_crate/src/lib.rs
pub fn hello() {
println!("How are you?");
}
my_rust_script
#!/usr/bin/env rust-script
//! ```cargo
//! [dependencies]
//! my_crate = { path = "my_crate" }
//! ```
fn main() {
my_crate::hello()
}
Whether officially supported or not, currently both mod other; and include!("other.rs"); works. However, the thing that doesn't work, is that rust-script script.rs, does not recompile if only other.rs changed. So in that case use rust-script -f script.rs.