MST

星途 面试题库

面试题:Rust跨平台代码编写中如何处理文件路径差异

在Rust编写跨Windows、Linux和macOS平台的代码时,文件路径的表示和分隔符在不同操作系统下是不同的。请描述你会如何编写一个函数,该函数接收一个文件名,无论运行在哪个平台,都能正确拼接当前目录和该文件名,形成完整的文件路径,并给出具体代码实现。
47.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

在Rust中,可以使用std::path::PathBuf来处理跨平台的文件路径。以下是实现代码:

use std::path::PathBuf;

fn get_full_path(file_name: &str) -> PathBuf {
    let current_dir = std::env::current_dir().expect("Failed to get current directory");
    let mut path = PathBuf::from(current_dir);
    path.push(file_name);
    path
}

你可以这样调用这个函数:

fn main() {
    let file_name = "example.txt";
    let full_path = get_full_path(file_name);
    println!("Full path: {:?}", full_path);
}

解释:

  1. std::env::current_dir() 获取当前工作目录,如果失败则expect抛出错误。
  2. PathBuf::from(current_dir) 创建一个基于当前目录的PathBuf实例。
  3. path.push(file_name) 将文件名追加到路径中,PathBuf会根据当前操作系统使用正确的路径分隔符。