У меня есть проект lib с несколькими модулями one
и two
в отдельных файлах.Каждый модуль имеет функцию с именем run
:
mod one {
pub fn run() {
println!("One");
}
}
mod two {
pub fn run() {
println!("Two");
}
}
fn main() {
one::run();
two::run();
}
Playground
Я хотел бы скомпилировать каждый из этих файлов / функций в WebAssembly и затем иметь возможностьзагрузите их и вызовите функцию run()
.
Я считаю, что мне нужно добавить директиву #[no_mangle]
и пометить их как extern "C"
функции.Когда я это делаю, происходит столкновение имен в функции run
, несмотря на структуру модуля.
Это измененная версия, которая не будет компилироваться:
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();
}
Playground
Есть ли способ иметь в проекте несколько модулей, каждый с функцией с одинаковым именем, чтобы я мог скомпилировать файлы с функцией в WebAssembly, сохранив имя функции