问题
我是拉斯特和陶丽的新手我不知道为什么我不能正确地重新导出函数(pub use
)并在tauri::generate_handler中使用它。
编码
src/main.rs
mod util;
fn main() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![util::add])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
src/util/mod.rs
mod operation;
// pub use operation::add; // This line not work as expected
pub use operation::*; // This line no problem
src/util/operation.rs
#[tauri::command]
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
我不知道为什么pub use operation::add;
不工作的预期和原因
failed to resolve: could not find `__cmd__add` in `util`
could not find `__cmd__add` in `util` rustc
在tauri::generate_handler!
中。我哪里错了?
1条答案
按热度按时间ifsvaxew1#
问题是
tauri::command
创建了一个名为__cmd__add
的新符号,tauri::generate_handler
使用该符号而不是(或除了)add
本身。当您使用use operation::*
时,您可以从operation
导入所有内容,包括__cmd__add
。但是当你使用use operation::add
时,你只能导入add
。一个不好的解决方法是
use operation::{ add, __cmd__add }
,但不鼓励这样做,因为__cmd__add
是一个私有的实现细节,不打算直接使用。完整的修复需要更改Tauri,但一个可能的解决方法是将
add
Package 在一个模块中,以便tauri::generate_handler
可以在该模块中找到__cmd__add
:src/util/operation.rs
中:src/util/mod.rs
中:src/main.rs
中:请注意,在调用
tauri::generate_handler
时,需要显式引用add
模块中的add
函数,因此需要使用add::add
。但是,当你想从Rust代码中调用函数时,你可以直接这样做:let four = util::add (2, 2)
可以正常工作。