use ::log::{debug, error, info, trace, warn}; use tokio::runtime::Runtime; mod log; mod network; #[cxx::bridge] mod ffi { extern "Rust" { fn download_file(url: &str, path: &str) -> Result<()>; fn http_get(url: &str) -> Result; fn init_log(is_debug: bool); fn log_trace(msg: &str); fn log_debug(msg: &str); fn log_info(msg: &str); fn log_warning(msg: &str); fn log_error(msg: &str); } } fn log_error(msg: &str) { error!("{}", msg); } fn log_warning(msg: &str) { warn!("{}", msg); } fn log_info(msg: &str) { info!("{}", msg); } fn log_debug(msg: &str) { debug!("{}", msg); } fn log_trace(msg: &str) { trace!("{}", msg); } fn init_log(is_debug: bool) { log::init_log(is_debug); } fn get_runtime() -> Runtime { Runtime::new().expect("创建Tokio运行时失败") } fn download_file(url: &str, path: &str) -> Result<(), Box> { let rt = get_runtime(); rt.block_on(network::download_file(url, path))?; Ok(()) } fn http_get(url: &str) -> Result> { let rt = get_runtime(); rt.block_on(network::http_get(url)) }