如何解决此错误?当我在impl
中使用“匿名生存期”时,我到底要告诉编译器什么?
struct LineHandlerInfo<'a> { label: &'a str, match_literal: &'a str, f: fn(&str) -> Option<&str>, } struct Game<'a> { handlers: Vec<LineHandlerInfo<'a>>, } impl Game<'_> { fn match_str<'a>( &'a mut self, label: &'a str, match_literal: &'a str, mut f: fn(&str) -> Option<&str>, ) { let mut lh = LineHandlerInfo { label, match_literal, f, }; self.handlers.push(lh); } } fn main() { let mut g = Game { handlers: Vec::new(), }; g.match_str("echo hello", "hello", |s| { println!("{}", s); None }); }
当我尝试编译时,出现以下错误:
error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'a` due to conflicting requirements --> src/main.rs:18:22 | 18 | let mut lh = LineHandlerInfo { | ^^^^^^^^^^^^^^^ | note: first, the lifetime cannot outlive the lifetime 'a as defined on the method body at 12:18... --> src/main.rs:12:18 | 12 | fn match_str<'a>( | ^^ note: ...so that reference does not outlive borrowed content --> src/main.rs:19:13 | 19 | label, | ^^^^^ note: but, the lifetime must be valid for the lifetime '_ as defined on the impl at 11:11... --> src/main.rs:11:11 | 11 | impl Game<'_> { | ^^ = note: ...so that the expression is assignable: expected LineHandlerInfo<'_> found LineHandlerInfo<'_>
如何解决此错误,当我已经在结构上具有生存期时,当我在
impl Game
上指定生存期时,该告诉编译器什么?
如何解决此错误?当我在impl中使用“匿名生存期”时,我到底要告诉编译器什么? struct LineHandlerInfo {标签:&'a str,match_literal:&'a ...
我该如何解决此错误?