fornwall / rust-script

Run Rust files and expressions as scripts without any setup or compilation step.
https://rust-script.org
Apache License 2.0
1.27k stars 43 forks source link

Document how to use external modules? #61

Open rauschma opened 1 year ago

rauschma commented 1 year ago

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

fornwall commented 1 year ago

Is it possible to use external modules?

It's not currently possible, but looks interesting. Experimenting with it.

fornwall commented 1 year ago

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.

rfdonnelly commented 1 year ago

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()
}