错误[E0106]:缺少生命周期说明符(尽管已设置)

d33*_*tah 1 rust borrow-checker

考虑以下代码:

extern crate clap;
use clap::{App};

use std::io;

fn parse_argv() -> &'static clap::ArgMatches {
    return App::new("example")
    .get_matches()
}

fn main() -> io::Result<()> {

    let matches = parse_argv();

    Ok(())
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

extern crate clap;
use clap::{App};

use std::io;

fn parse_argv() -> &'static clap::ArgMatches {
    return App::new("example")
    .get_matches()
}

fn main() -> io::Result<()> {

    let matches = parse_argv();

    Ok(())
}
Run Code Online (Sandbox Code Playgroud)

这里有什么问题,我该如何解决?我想我做了编译器要求的,但错误不会消失。

d33*_*tah 5

我在#rust-beginners IRC 频道上得到了答案:

13:10:17 拖拉机 | d33tah:我怀疑 ArgMatches 实际上想要生命周期,所以在这种情况下 ArgMatches<'static>

因此,解决方案是将函数签名更改为:

fn parse_argv() -> clap::ArgMatches<'static> {
Run Code Online (Sandbox Code Playgroud)