【Tauri2】023——PathResolver
可以发现这是一个泛型元组结构体,包含一个字段 AppHandle<R>,pub(crate) 表示该字段在当前 crate 内公开,但对外部不可见。元组结构体只能通过索引.0访问其内部字段resolve方法&self,path: P,&self不必细说path是泛型P,P需要实现trait AsRef<Path>,比如&str、String等base_directory是BaseDirectory
前言
前面介绍了几个全局状态,这篇就来看看PathResolver这个全局状态。
参考
PathResolver in tauri::path - Rust
https://docs.rs/tauri/latest/tauri/path/struct.PathResolver.html
实现的方法
pub fn file_name(&self, path: &str) -> Option<String>
pub fn audio_dir(&self) -> Result<PathBuf>
pub fn cache_dir(&self) -> Result<PathBuf>
pub fn config_dir(&self) -> Result<PathBuf>
pub fn data_dir(&self) -> Result<PathBuf>
pub fn local_data_dir(&self) -> Result<PathBuf>
pub fn desktop_dir(&self) -> Result<PathBuf>
pub fn document_dir(&self) -> Result<PathBuf>
pub fn download_dir(&self) -> Result<PathBuf>
pub fn executable_dir(&self) -> Result<PathBuf>
pub fn font_dir(&self) -> Result<PathBuf>
pub fn home_dir(&self) -> Result<PathBuf>
pub fn picture_dir(&self) -> Result<PathBuf>
pub fn public_dir(&self) -> Result<PathBuf>
pub fn runtime_dir(&self) -> Result<PathBuf>
pub fn template_dir(&self) -> Result<PathBuf>
pub fn video_dir(&self) -> Result<PathBuf>
pub fn resource_dir(&self) -> Result<PathBuf>
pub fn app_config_dir(&self) -> Result<PathBuf>
pub fn app_data_dir(&self) -> Result<PathBuf>
pub fn app_local_data_dir(&self) -> Result<PathBuf>
pub fn app_cache_dir(&self) -> Result<PathBuf>
pub fn app_log_dir(&self) -> Result<PathBuf>
pub fn temp_dir(&self) -> Result<PathBuf>
impl<R: Runtime> PathResolver<R>
pub fn resolve<P: AsRef<Path>>(
&self,
path: P,
base_directory: BaseDirectory,
) -> Result<PathBuf>
pub fn parse<P: AsRef<Path>>(&self, path: P) -> Result<PathBuf>
从上面的函数中,可以看出这是与路径有关的结构体,都是获得路径的
正文
看看定义
pub struct PathResolver<R: Runtime>(pub(crate) AppHandle<R>);
可以发现这是一个泛型元组结构体,包含一个字段 AppHandle<R>,pub(crate) 表示该字段在当前 crate 内公开,但对外部不可见。
元组结构体只能通过索引 .0 访问其内部字段
resolve方法
pub fn resolve<P: AsRef<Path>>(
&self,
path: P,
base_directory: BaseDirectory
) -> Result<PathBuf>
&self不必细说
path是泛型P,P需要实现trait AsRef<Path>,比如&str、String等
base_directory是BaseDirectory
pub enum BaseDirectory
这个一个enum,里面有二十几个变体,不与展示,后面会使用。
[src\main.rs:23:13] &app_s = "C:\\Users\\26644\\AppData\\Roaming\\com.start.app\\src"
简单展示一下在Windows系统打印的结果
Manager这个trait中,定义了path方法,返回值是&PathResolver,
因为App或者AppHandle,实现Manager。
因此,通过App调用path方法,然后使用resolve
在setup函数中,使用如下
let app_s=app.path().resolve("src",BaseDirectory::AppConfig).unwrap();
dbg!(&app_s);
打印的结果如下
[src\main.rs:23:13] &app_s = "C:\\Users\\26644
\\AppData\\Roaming\\com.start.app\\src"
看来resolve函数类似于拼接路径 BaseDirectory::AppConfig + src
file_name
pub fn file_name(&self, path: &str) -> Option<String>
获取文件名。
简单使用file_name
let app_s=app.path().file_name("src/test.js").unwrap();
dbg!(&app_s);
结果如下
[src\main.rs:23:13] &app_s = "test.js"
audio_dir
let app_s=app.path().audio_dir().unwrap();
打印结果
[src\main.rs:23:13] &app_s = "C:\\Users\\26644\\Music"
public_dir
let app_s=app.path().public_dir().unwrap();
[src\main.rs:23:13] &app_s = "C:\\Users\\Public"
home_dir
let app_s=app.path().home_dir().unwrap();
[src\main.rs:23:13] &app_s = "C:\\Users\\26644"
picture_dir
let app_s=app.path().picture_dir().unwrap();
[src\main.rs:23:13] &app_s = "C:\\Users\\26644\\Pictures"
resource_dir
let app_s=app.path().resource_dir().unwrap();
[src\main.rs:24:13] &app_s = "\\\\?\\D:\\start\\src-tauri\\target\\debug"
app_data_dir
let app_s=app.path().app_data_dir().unwrap();
[src\main.rs:26:13] &app_s = "C:\\Users\\26644\\AppData\\Roaming\\com.start.app"
temp_dir
let app_s=app.path().temp_dir().unwrap();
[src\main.rs:26:13] &app_s = "C:\\Users\\26644\\AppData\\Local\\Temp\\"
其他差不多。
以后还会使用的。

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)