I have a lib project with multiple modules called one
and two
, in separate files. Each module has a function called run
:
mod one {
pub fn run() {
println!("One");
}
}
mod two {
pub fn run() {
println!("Two");
}
}
fn main() {
one::run();
two::run();
}
I would like to compile each of these files/functions to WebAssembly and then be able to load them and call the function run()
.
I believe I have to add the #[no_mangle]
directive and mark them as extern "C"
functions. When I do that, then there is a name clash on the run
function, despite the module structure.
This is the modified version that won't compile:
mod one {
#[no_mangle]
pub extern "C" fn run() {
println!("One");
}
}
mod two {
#[no_mangle]
pub extern "C" fn run() {
println!("Two");
}
}
fn main() {
one::run();
two::run();
}
Is there a way to have multiple modules in a project, each with a function with the same name, such that I can compile the files with the function to WebAssembly, preserving the function name?