Files
DnfUtils/src/lib.rs
2026-01-23 21:40:09 +08:00

66 lines
1.2 KiB
Rust

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<String>;
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<dyn std::error::Error>> {
let rt = get_runtime();
rt.block_on(network::download_file(url, path))?;
Ok(())
}
fn http_get(url: &str) -> Result<String, Box<dyn std::error::Error>> {
let rt = get_runtime();
rt.block_on(network::http_get(url))
}