前言

前面介绍了几个全局状态,这篇就来看看PathResolver这个全局状态。

参考

PathResolver in tauri::path - Rusthttps://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\\"

 其他差不多。

以后还会使用的。

Logo

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

更多推荐