我目前正在尝试实现一个内置于 Rust 的 shell 以供练习,我已经设法实现了大多数功能,但是,我目前正在尝试制作一个带有 path <arg1> <arg2> ...
的内置命令,并且将此添加到我的程序的路径变量中。但是,我有这样的设置,因为我有一个循环,它解析命令输入并生成一个命令变量作为 &str
,其参数作为 Vec<&str>
形成我的命令结构。
对于这个内置命令 path,我需要获取参数并创建一个新的路径向量并替换现有路径。我当前的路径变量是在我的循环之外声明的,并且是一个 Vec<&Path>
。我目前收到一个错误:
lifetime mismatch but data from `command` flows into `path` here
这是可以理解的,但我已经尝试将我的参数设置为 'static
生命周期,但是这失败了 borrowed value does not live long enough
,因为我读取循环中的行并替换它并处理字符串到我的命令结构中。非常感谢您的帮助!
let line = stdin.lock().lines().next().unwrap().unwrap();
let split = line
.split_whitespace()
.enumerate()
.filter(|&(i, _)| i > 0)
.map(|(_, e)| e);
let args = split.collect::<Vec<&str>>();
// Command Struct
struct Program<'a> {
command: &'a str,
args: Vec<&'static str>,
}
// Dispatcher
fn dispatch_command<'a>(command: Program, path: &mut Vec<&Path>) -> Result<(), &'a str>